Python
SQL
SQLite3

Pythonライブラリを学ぶ SQLite3編

環境

  • python3.6

学習のゴール

  • 接続・切断ができる。
  • SQLを実行できる

実践

接続と切断

以下のコードを実行してみましょう。
※実行した後カレントディレクトリにdb.sqlite3というファイルが作成されます。

test1.py
import sqlite3

#db.sqlite3に接続
con = sqlite3.connect('./db.sqlite3')

#db.sqlite3とのコネクションを切断
con.close()

解説

con = sqlite3.connect('./db.sqlite3')

ここで、db.sqlite3に接続するConnectionオブジェクトを、
conという名前で作成しています。
指定したDBファイルがない場合は自動で作ってくれます。

次に、

con.close()

これはdb.sqlite3との接続を切ります。
closeを忘れると他のプロセスがそのDBファイルにアクセスできなかったりするので必ずcloseしておきましょう。

ここまででSQLiteへの接続と切断について学びました。
次はSQLの実行方法について学びましょう!

SQLの実行

以下のコードを実行してみましょう。

test2.py
import sqlite3

con = sqlite3.connect('./db.sqlite3')

#Cursorオブジェクトを作成
cur = con.cursor()

#SQLの実行
cur.execute("create table person(id integer, name text)")
cur.execute("insert into person values(1, 'yamada')")
person = cur.execute("select * from person")
print(list(person))

#追加したレコードをコミット
con.commit()
con.close()


結果

[(1, 'yamada')]

解説

cur = con.cursor()

ここではCursorオブジェクトをcurという名前で作成しています。
cursorオブジェクトは、SQLを実行したりその結果を受け取るためのインターフェース的な役割を担っています。

このCursorオブジェクトの持つexecuteメソッドを使ってSQLを実行します。

#SQLの実行
cur.execute("create table person(id integer, name text)")
cur.execute("insert into person values(1, 'yamada')")
person = cur.execute("select * from person")
print(list(person))

create文やinsert文などのデータを追加する操作には返り値はありません。
select文を使用すると、返り値をcursorオブジェクトが保持してくれるので、
list()でリスト型に変換してprint()で表示できます。

最後にcommitです。

con.commit()

Connectionオブジェクトが持つcommitメソッドは、追加したレコードを恒久的に保存してくれます。
commitを忘れるとせっかく追加したデータが消えてしまうので注意が必要です。

これでSQLの実行ができるようになりました!

まとめ

もう一度学習のゴールを確認してみましょう。

  • 接続、切断ができる
  • SQLを実行できる

すべて達成できましたね。
お疲れ様でした。

関連資料

pythonドキュメント
https://docs.python.jp/3/library/sqlite3.html