Pythonでsqlite3
この記事に書かれている事
pythonでsqlite3を使う方法
はじめに
ゼミの研究で使用するデータセットを提供していただきました。
提供して頂いたデータセットはとても規模が大きい為、SQLiteと呼ばれるローカル環境でも扱えるフリーのデータベースに纏められていました。
データベースは趣味でちょこちょこ触っていたのですが、pythonで扱った事は無かったので、簡単な使い方をまとめます。
SQLiteって何?
SQLiteはMySQLと似た構文で扱えるリレーショナルデータベースの1つで、データベース自体が1つのファイルで扱える、ローカルな環境でも動作する、システムがコンパクトであるという特徴があり、ソフトウェアと一緒に梱包されて利用されています。知っている限りだとAndroidOSにも標準でインストールされており、様々なアプリケーションから利用する事が出来ると記憶しています。
SQLiteの基本システム
データベースの概要
SQLiteのデータベースは、Databaseの中にTableがあり、そのTableの中にある属性を纏めた表の様なものでデータを管理しています。
言葉にすると分かりにくいので図を作りました。
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()を行わないと、編集が適用されません。忘れずに行わないといけませんね。