Posted at

Pythonライブラリを学ぶ SQLite3編

More than 1 year has passed since last update.


環境


  • 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