LoginSignup
15
18

More than 5 years have passed since last update.

Pythonライブラリを学ぶ SQLite3編

Posted at

環境

  • 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

15
18
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
15
18