Closed7

SQLite

ダーマンダーマン
sql_lite.py
# sqlite3モジュールを読み込み
import sqlite3
sqlite_path = 'db/sql_training.sqlite'

# sqliteファイルへ接続
# connectionオブジェクト経由でDB操作します
connection = sqlite3.connect(sqlite_path)
# カーソルを取得
cursor = connection.cursor()
# SELECT
cursor.execute('SELECT * FROM users')

# 全件取得は cursor.fetchall()
# タプルのリストが返ってくる
res = cursor.fetchall()
print(res)
#接続終了
connection.close()
ダーマンダーマン

コネクションとカーソル

データベースとの接続情報を、コネクションと表現する。
カーソルは、データベースの位置情報。
カーソルが移動して次のレコードに移動して内容を読み込むことを、フェッチ(fetch)と言う。

fetchには2種類のメソッドがある。

  • cursor.fetchall()
  • cursor.fetchone()

fetchallは最後のレコードまで読み込むのに対して、fetchoneは1行ずつ読み込む。

ダーマンダーマン

executeのSQL分に?を指定し、
第二引数にタプルで値を設定すると動的に書き換えることができる。

sample.py
cursor.execute('SELECT code, name FROM customers WHERE code=?', ('2710009',))
ダーマンダーマン

executemanyを使用すれば、リスト要素の回数分SQLの実行をループできる。

sample.py
 # 複数件挿入
    data = [
        (3, '伊藤'),
        (4, '渡辺'),
        (5, '湯本')
    ]
    cursor.executemany('INSERT INTO sample VALUES (?, ?)', data)
    
    # コミット
    connection.commit()

最後にコミットをすると修正内容がデータベースに保存される。

ダーマンダーマン

UPDATE(更新)

UPDATEはINSERTと同様。
SQL文をそのまま入れ替えるだけ。

sample.py
# UPDATE実行
    cursor.execute('UPDATE sample SET name=? WHERE id=?', ('石川', 1))
    data = [
        ('山本', 2),
        ('加藤', 3),
        ('近藤', 4),
        ('中島', 5)
    ]
    cursor.executemany('UPDATE sample SET name=? WHERE id=?', data)
    
    # コミット
    connection.commit()
ダーマンダーマン

DELETEも同様SQL文を入れ替えるだけ。

sample.py
# DELETE実行
    data = [
        (2,),
        (3,),
        (4,),
        (5,)
    ]
    cursor.executemany("DELETE FROM sample WHERE id=?", data)

    # コミット
    connection.commit()
このスクラップは2023/02/21にクローズされました