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にクローズされました