環境
- python3.6
学習のゴール
- 接続・切断ができる。
- SQLを実行できる
実践
接続と切断
以下のコードを実行してみましょう。
※実行した後カレントディレクトリにdb.sqlite3というファイルが作成されます。
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の実行
以下のコードを実行してみましょう。
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