Pythonでデータベースを使う,中でもSQLiteのように使う方法がないか調べてみたところ,ドンピシャのやり方があったのでメモ.
主な内容は,公式ドキュメントにある通りだったので,とりあえず使えることを確認するために最初の部分だけ確認した.
また,筆者のPython環境は Windows10 に Anaconda4.1.1(64bit) で Python3.5.2 をインストールした状態です.IDE として PyCharm を用いております.
SQLiteが初めての方は,次の投稿をまず読んでいただくとスムーズに学べるかと思います.
PythonでSQLiteを使う
Python3には,デフォルトでSQLiteの操作ができるライブラリがが組み込まれているようなので,次のようにimportするだけで使えるようになる.
import sqlite3
ただし,ただ単にSQLiteを操作するようにコードを書けばいいわけではないので注意(そりゃそうか).
データベースにアクセスする
「アクセスする」というよりは「コネクション(Connection)を作る」というらしい.基本的な使い方は
[コネクションの名前] = sqlite3.connect([データベースファイル名(文字列)])
のようにする.コネクションの名前はプログラムの中で使うものなので,本人がわかりやすいものにすれば問題ない.データベースファイル名に該当するファイルがpythonファイルと同じフォルダにない場合には,このとき入力した[データベースファイル名]で自動的に作成される.
例えば,pythonファイルがある同じディレクトリにある”example,db”というデータベースファイルにアクセスしたいときは
dbfile = sqlite3.connect('example.db')
のようにする.左辺にある”dbfile”は筆者がわかりやすいからそうした.
SQLiteのコマンドを使う
基本的な使い方は,まずおまじないとして
[カーソルオブジェクトの名前] = [コネクションの名前].cursor()
という行をpythonコードの頭の方(実行文の前)に書いておく.そのあとに
[カーソルオブジェクトの名前].execute([SQLiteで使う文字列])
と書けば,[SQLiteで使う文字列]のSQLite操作が実行される.カーソルオブジェクトを経由させるようになっている理由は筆者も今のところしっかり理解していないのだが,とりあえず必要だということだけは把握している.
筆者の文章力の関係上,文字で書くとさっぱり伝わらないので,例を書く.
テーブルの追加
SQLiteでテーブルを追加する際,例えば”Test_table”という名前で”atai1″,”atai2″,”atai3″というデータをもつテーブルを作成するときには,
SQLiteが実行されている状態で
create table Test_table(atai1,atai2,atai3);
のようにした.これをpythonで行うには,次のように書く
c = dbfile.cursor() c.execute("create table Test_table(atai1,atai2,atai3);")
(謎の)カーソルオブジェクトの名前をカーソル(cursor)の頭文字をとって”c”という名前にした.実行する文は文字列である必要があるので,クォテーションマーク(”)かダブルクォテーションマーク(“”)で囲うことを忘れずに.
引数が長いと気持ち悪いという方は,次のように文字列を代入する方法でも同じことができる
sql = 'create table Test_table(atai1,atai2,atai3);' c.execute(sql)
変更の保存(コミット)
PythonでSQLiteを使う際には,指示をしたからといってデータベースにすぐに変更が加わって保存されるわけではないらしい.ということで次のようにして変更を保存してあげる必要がある.
[コネクションの名前].commite()
今までの具体例でいうのであれば
dbfile.commit()
としてあげなければならない.
データベースファイルを閉じる
Pythonのプログラムの中でもうコネクションをつないでいるデータベースファイルが必要なくなったら,次のようにして閉じる.
[コネクションの名前].close()
今までの具体例でいうのであれば
dbfile.close()
.
簡単なコード:テーブルを1つ作成し,データを1つ入れる
今までのは知識の断片なので,実際の使い方を確認して終わりにする.
- 「PythonからSQLiteを使う」という縛りの下で,
- “example.db”という名前のデータベースファイルを作り,
- “Test_table”という名前のテーブルを作成する.
- そのテーブルの要素は”atai1″,”atai2″,”atai3″という3つのデータを持っていて,
- そのテーブルの唯一の要素”test_element”はatai1は3, atai2は”Second Value”, atai3は0.56という値を持つ.
という問題があったときには次のようなコードを答えればよい.今までの断片化された知識をすべて使っているので,段階を追って理解していただきたい.
import sqlite3 dbfile = sqlite3.connect('example.db') c = dbfile.cursor() sql = 'create table Test_table(atai1,atai2,atai3);' c.execute(sql) sql = "insert into Test_table values(3,'Second value',0.56);" c.execute(sql) dbfile.commit() dbfile.close()
お粗末な説明にはなってしまいましたが,「PythonからSQLiteのコマンドが同じように使える」ということが分かっていただければ幸いです.