PythonでSQLiteを使う

Pythonでデータベースを使う,中でもSQLiteのように使う方法がないか調べてみたところ,ドンピシャのやり方があったのでメモ.

主な内容は,公式ドキュメントにある通りだったので,とりあえず使えることを確認するために最初の部分だけ確認した.

sqlite3 – Python 公式ドキュメント

また,筆者のPython環境は Windows10 に Anaconda4.1.1(64bit) で Python3.5.2 をインストールした状態です.IDE として PyCharm を用いております.

SQLiteが初めての方は,次の投稿をまず読んでいただくとスムーズに学べるかと思います.

はじめての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つ入れる

今までのは知識の断片なので,実際の使い方を確認して終わりにする.

  1. 「PythonからSQLiteを使う」という縛りの下で,
  2. “example.db”という名前のデータベースファイルを作り,
  3. “Test_table”という名前のテーブルを作成する.
  4. そのテーブルの要素は”atai1″,”atai2″,”atai3″という3つのデータを持っていて,
  5. そのテーブルの唯一の要素”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のコマンドが同じように使える」ということが分かっていただければ幸いです.

このブログについて

IAtLeX です.ブログをはじめてさほど時間がたっていないので,未熟な内容が多々あるかと思いますが,それも時間が解決してくれるはず...Python系の記事を着々と充実させていきたいです.投稿主についてはこちらを参照してください.

このブログについて - http://iatlex.com/about_blog/

コメントを残す

*