ページへ戻る

− Links

 印刷 

Python​/SQLiteから使う基礎 :: NJF Wiki

xpwiki:Python/SQLiteから使う基礎

インストール anchor.png[1] Edit [2]

SQLite自体のインストールは他の資料を参照してください。 MacやLinux系のシステムだと標準で入っていることが多いです。

Pythonから使うAPIは標準ライブラリに入っているので、特にインストール作業は必要ありません。

面倒な設定などもいらないので、ローカルで動くようなプログラムのちょっとした開発ならSQLiteを使うのがおすすめです。

データベースの選び方についてはPython​/データベースの選択[3]を参照のこと。

Page Top

データベースへの接続・更新 anchor.png[4] Edit [5]

プログラムからデータベースへ接続するのは一定のパターンがあり、ほとんどの言語で以下のような手順をふみます。

まず、データベースへの接続を行います。 その戻り値としてデータベースの情報を格納したオブジェクトを取得します。 一般にこのオブジェクトは「コネクタ」と呼ばれます。

次にそのコネクタからデータベースのどこのデータをあつかっているか、といった情報を扱うためのオブジェクトを取得します。 一般にこのオブジェクトは「カーソル」と呼ばれます。

SQLなどはカーソルを通じて発行され、書き込み終了のときのコミットやデータベースのクローズなどはコネクタを通じて実行されます。

この手順をふまえて、「test.db」という名前のファイルを開き(無ければ制作し)、testというテーブルが無ければ制作し、データを1件追加するには以下のようにします。

import sqlite3

conn = sqlite3.connect('test.db')

cursor = conn.cursor()

cursor.execute("CREATE TABLE IF NOT EXISTS test (id int,data txt )")

cursor.execute("INSERT INTO test VALUES (1,'This is test.')")

conn.commit()

conn.close()

以下のように変数を外に出すこともできます。またマルチバイト文字も利用できますが、その時にはUnicode型を使わないといけません。

cursor.execute(u"INSERT INTO test VALUES (?,?)",(2,u'これはテスト'))

こちらの方が特殊文字などをエスケープしてくれるので、SQLインジェクションなどに対しても安全です。

Page Top

データの参照 anchor.png[6] Edit [7]

データの参照は以下のようになります。

import sqlite3

conn = sqlite3.connect('test.db')

cursor = conn.cursor()

cursor.execute("SELECT * FROM test;")

for row in cursor:
    print row[0],row[1]

conn.close()

特に難しいところはないでしょう。


Last-modified: 2016-12-25 (日) 10:10:00 (JST) (2678d) by njf