SQLite3をPythonで操作する
現在Django、Flaskなどのフレームワークを使用せずに、
簡単なWebアプリケーション(Todo管理アプリ)を開発してます。
DBを何にするか(何が使用できるか)調査したところ、標準でSQLite3が
使用できるとのことなので、
Pythonのsqlite3を使用してPythonのコードでsqlite3を操作する方法を記載します。
(初投稿のため優しく見守れっていただけると嬉しいです)
参考ドキュメント
python公式ドキュメント
Pythonバージョン
Pythonバージョンは以下で確認できる。
python -V
Python 3.8.0
基本的な記載方法
基本的には以下のように記載方法になる。
import sqlite3
dbname = 'example.db'
conn = sqlite3.connect(dbname)
cur = conn.cursor()
cur.execute(sqlクエリ)
conn.commit()
conn.close()
import sqlite3
でsqlite3をインポートする
connect(dbname)
で使用するDBファイルに接続する(.dbファイルが存在しない場合、新規で作成される。)
cursor()
でオブジェクト化しexecuteが実行できるようにする。
execute(sqlクエリ)
でsqlクエリを実行できます。
DBに変更がある場合に、commitすることで更新できる。
close()
でDBとの接続を閉じる
テーブル作成
import sqlite3
dbname = 'example.db'
conn = sqlite3.connect(dbname)
cur = conn.cursor()
cur.execute('CREATE TABLE examples(id INTEGER PRIMARY KEY AUTOINCREMENT, name STRING, price INTEGER)')
conn.close()
create文でテーブルを作成する
id INTEGER PRIMARY KEY でidを指定しなくても値がn+1で作成される(最終が3の場合4が入る)
AUTOINCREMENTを入れると最終が3のデータを削除後、データを登録されると3ではなく、4が入る。
データ登録
import sqlite3
dbname = 'example.db'
conn = sqlite3.connect(dbname)
cur = conn.cursor()
cur.execute('INSERT INTO examples values(1, "りんご",100)')
# コミットしないと反映されないため、登録、変更処理をした際はcommit()する
conn.commit()
conn.close()
データ取得
import sqlite3
dbname = 'example.db'
conn = sqlite3.connect(dbname)
cur = conn.cursor()
cur.execute('SELECT * FROM examples')
conn.close()
データ更新
import sqlite3
dbname = 'example.db'
conn = sqlite3.connect(dbname)
cur = conn.cursor()
cur.execute('UPDATE examples SET price = 260 WHERE id = "3"')
conn.commit()
conn.close()
データ削除
import sqlite3
dbname = 'example.db'
conn = sqlite3.connect(dbname)
cur = conn.cursor()
cur.execute('DELETE FROM examples WHERE id = "2"')
conn.commit()
conn.close()