Help us understand the problem. What is going on with this article?

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

tetymd
スタートアップでエンジニアをしています
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away