LoginSignup
6
11

More than 3 years have passed since last update.

【備忘録】PythonでSQLite3を使う

Last updated at Posted at 2019-08-19

環境

Windows 10
Python 3.6.8(Anaconda3)

SQLite3のダウンロード

https://www.sqlite.orgにアクセス
②「Download」をクリック
image.png

③バイナリファイルをダウンロード
image.png

④展開したフォルダ内のファイルを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
    )
6
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
11