PythonでSQLiteを使う方法
PythonでSQLite3を操作する方法です。
インストール
標準ライブラリに含まれるため、pipのインストールは不要です。
システムにSQLite3がインストールされていない場合はインストールしてください。下記はUbuntuのインストール例です。
sudo apt update
sudo apt install sqlite3
使用方法
データベースファイルに接続し、カーソルオブジェクトでデータベースを操作します。
操作終了後、データベースの接続を閉じます。
データベースに接続する
import sqlite3
conn = sqlite3.connect('データベースファイル')
データベースの接続を閉じる
conn.close()
データの追加や削除
変数の値を使う必要がある場合は、プレースホルダ(?)を変数の値を使いたいところに埋めておきます。そして、値のタプル(()
)やリスト([]
)をカーソルのexecute()
メソッドの第2引数として渡します。
cursor = conn.cursor()
cursor.execute("INSERT INTO TABLE_LOGS (timestamp, num) VALUES (?,?)", ('2023-11-03 12:15:22.000001', 26))
conn.commit()
バインド変数が1つの場合にタプルで提供するにはカンマが必要です。リストの場合は不要です。
cursor.execute("SELECT name FROM users WHERE name=?", (username,))
cursor.execute("SELECT name FROM users WHERE name=?", [username])
データの取得
cursor.execute()
でクエリを指定し、cursor.fetchall()
することで結果をリスト形式で取得できます。
cursor = conn.cursor()
cursor.execute("SELECT * FROM TABLE_LOGS")
rows = cursor.fetchall()
for row in rows:
print(row)
#;
辞書形式でデータを取得する
sqlite3
モジュールのRow
クラスを使用すると、結果を辞書のようにアクセスできるようになります。
conn = sqlite3.connect('データベースファイル')
conn.row_factory = sqlite3.Row
cursor = conn.cursor()
cursor.execute("SELECT * FROM TABLE_LOGS")
rows = cursor.fetchall()
conn.close()
for row in rows:
print(row['id'])
SQLiteの使用例
import datetime
import sqlite3
# SQLiteデータベースに接続
conn = sqlite3.connect('my-local.db')
# カーソルオブジェクトを作成
cursor = conn.cursor()
current_time = datetime.datetime.now()
cursor.execute("INSERT INTO TABLE_LOGS (timestamp, num) VALUES (?,?)", (current_time, 20))
# 文字列で TIMESTAMP を設定
cursor.execute("INSERT INTO TABLE_LOGS (timestamp, num) VALUES (?,?)", ('2023-11-03 12:15:22.000001', 26))
# コミット
conn.commit()
# クエリ発行
cursor.execute("SELECT * FROM TABLE_LOGS")
rows = cursor.fetchall()
for row in rows:
print(row)
#;
# 接続を閉じる
conn.close()