環境
Windows 10
Python 3.6.8(Anaconda3)
SQLite3のダウンロード
①https://www.sqlite.orgにアクセス
②「Download」をクリック
④展開したフォルダ内のファイルをAnacondaのパス(※)が通っているフォルダにコピーし、ターミナルからsqlite3
コマンドで呼び出せるようにする
※ C:\Users{ユーザー名}\Anaconda3\Scripts など
SQLite3の使い方
概要
sqlite3
をインポートしたうえで、conn = sqlite3.connect('DB名')
でデータベースと接続し、curs = conn.cursor()
でカーソルオブジェクトを生成し、curs.execute('SQL文')
でSQL文を実行し、conn.commit()
でコミット(実行を確定)する。
最後に、curs.close()
とconn.close()
でカーソルとDB接続を終了する。
コード例
import sqlite3
# インメモリーにしたい場合は':memory:'を引数に渡す
conn = sqlite3.connect('test.db')
# カーソル(こいつにどうして欲しいか指示をしていく)
curs = conn.cursor()
# テーブル作成を指示する(コミットしないとDBに登録されないので要注意)
curs.execute(
'CREATE TABLE persons(id INTEGER PRIMARY KEY AUTOINCREMENT, name String)'
)
conn.commit()
# テーブルに値を挿入する
curs.execute(
'INSERT INTO persons(name) values("Taro")'
)
conn.commit()
# 値を更新する
curs.execute('UPDATE persons SET name = "Jiro" WHERE name = "Taro"')
conn.commit()
# 検索してコンソールに表示する
curs.execute(
'SELECT * FROM persons;'
)
print(curs.fetchall())
# カーソルとDB接続を終了する
curs.close()
conn.close()
更新
2019年9月25日追記:テーブルAの名前の値をテーブルBの名前の値に更新するSQLとEXISTSの使いどころ
SQLiteのUPDATE文を教えてください。
SQL select文のinとexistsの違いがわかっていなかった問題
UPDATE tableA SET tableA.name = (
SELECT tableB.name FROM tableB WHERE tableA.id = tableB.id
) WHERE EXISTS (
SELECT tableB.name FROM tableB WHERE tableA.id = tableB.id
)