元理系院生の新入社員がPythonとJavaで色々頑張るブログ

プログラミングや機械学習について調べた事を書いていきます

Pythonでsqlite3

この記事に書かれている事

pythonでsqlite3を使う方法

はじめに

ゼミの研究で使用するデータセットを提供していただきました。

提供して頂いたデータセットはとても規模が大きい為、SQLiteと呼ばれるローカル環境でも扱えるフリーのデータベースに纏められていました。

データベースは趣味でちょこちょこ触っていたのですが、pythonで扱った事は無かったので、簡単な使い方をまとめます。

SQLiteって何?

SQLiteMySQLと似た構文で扱えるリレーショナルデータベースの1つで、データベース自体が1つのファイルで扱える、ローカルな環境でも動作する、システムがコンパクトであるという特徴があり、ソフトウェアと一緒に梱包されて利用されています。知っている限りだとAndroidOSにも標準でインストールされており、様々なアプリケーションから利用する事が出来ると記憶しています。

SQLiteの基本システム

データベースの概要

SQLiteのデータベースは、Databaseの中にTableがあり、そのTableの中にある属性を纏めた表の様なものでデータを管理しています。
言葉にすると分かりにくいので図を作りました。
f:id:emoson:20150228043750p:plain

命令文

一般的なデータベースはデータベース管理システムによって操作されます。
SQLiteも同様にデータベース管理システムであるSQLiteに対し、命令文を渡す事でデータベースその物を操作します。

SQLiteの命令文は次のサイトに詳しく解説されています。(丸投げ)
SQLite入門

PythonからSQLiteを使用する

pythonではSQLiteを標準対応しています。

データベースの作成・読み込み

import sqlite3
#データベースにアクセス. test.dbが無い時は作成
conn = sqlite3.connect("test.db")
#データベースを閉じる
conn.close()

データベースの操作

データベースの操作ではcursorオブジェクト作成し、cursorオブジェクトのクラスメンバであるexecute関数にsqliteの命令を与えます。

import sqlite3
#データベースの読み込み
conn = sqlite3.connect("test.db")
#カーソルの作成
c = conn.corsor()
#XXXという名前のテーブルの作成
c.execute("create table XXX (name text, age integer)")

#テーブルXXXにデータを追加
c.execute("insert into table XXX values ('田中', '30')")

#テーブルの変更を確定
conn.commit()

#データの読み出し
for row in c.execute("select * from XXX"):
    print(row)

#データベースを閉じる
conn.close()

データベースの中にテーブルを作りデータを追加しました。
注意すべき点は命令を渡す時の「"」ですね。
executeメソッドSQLiteの命令を文字列で渡す為、命令文に「"」を使う時は、「'」に変更するか、次のように命令文自体を三連引用符で囲む必要があります。

c.execute("""insert into table XXX values("田中", "30")""")

また、データベースを編集した後、conn.commit()を行わないと、編集が適用されません。忘れずに行わないといけませんね。