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の使用例

main.py
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()
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

コメント

メールアドレスが公開されることはありません。 が付いている欄は必須項目です