

pythonでSQLite3のデータベース操作の概要
この記事では、pythonを使ったデータベース(SQLite)ファイルの作成方法と、データベースファイルへのデータ保存方法、データ参照を方法を説明します。
この記事を読むことによって、データベースの操作方法がわかり、pythonプログラムが動作していない間も、データを保存しておくことができます。
pythonでSQLite3のデータベース操作の前提の環境
SQLiteのデータベースの操作の前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。
-
-
【python】バージョン確認の方法【→プログラミング初心者向け】
続きを見る
レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。
もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。
-
-
レンタルサーバでプログラミングする方法【→ブログのサーバでできる!】
続きを見る
pythonでSQLite3のデータベース操作のサンプルプログラム
ここでは、SQLite3ライブラリを使ったデータベースを操作するサンプルプログラムを説明します。
説明の順番は下記の通りです。
- テーブルの作成
- テーブルの削除
- テーブルデータの挿入
- テーブルデータの参照
「テーブル」とは、『データのどのような形でデータベースに入っているか』というデータの整理のしかたのことです。
例えば、お弁当をイメージすると分かりやすいと思います。
お弁当自体がデータベース、どこがご飯、どこがお惣菜というお弁当のの区分けがテーブル、そして、ご飯とお惣菜がデータです。
食材(データ)をお弁当(データベース)に並べるかということを示すのが、テーブルということになります。
SQLite3のデータベース操作:ライブラリのインポート
まず初めに、各種ライブラリをインポートします。
SQLiteの操作に必要なsqlite3、ファイル削除に必要なosライブラリをインポートしています。
import sqlite3
import os
SQLite3のデータベース操作:テーブルの作成
次は、データの保存に必要なテーブルの作成を行います。
まず、sqlite3.connectコマンドによって、データベースファイルを作成されます。
次に、CREATE TABLEというSQLコマンドによってテーブルを作成しています。
# テーブルの作成
def create_table():
# Connectionオブジェクトの作成
conn = sqlite3.connect('Test.db')
# Cursorオブジェクトの作成
con = conn.cursor()
try:
# TEST_DB_TABLEという名前のテーブルを作成する
con.execute('''CREATE TABLE '''+'TEST_DB_TABLE'+''' (
key1 varchar(64),
key2 varchar(64)
)''')
except sqlite3.OperationalError:
print("couldn't create table")
SQLite3のデータベース操作:テーブルの削除
次は、テーブルの削除を行います。Cursorオブジェクトの作成までは、前述のテーブル作成手順と同じです。
その後、DROP TABLEというSQLコマンドによって、テーブルを削除します。
現在のSQLコマンドでは、データベースファイル自体を削除することができないので,osコマンドを用いて、データベースファイル自体を削除しています。
# テーブルとDBファイルの削除
def delete_table():
# Connectionオブジェクトの作成
conn = sqlite3.connect('Test.db')
# Cursorオブジェクトの作成
con = conn.cursor()
try:
# TEST_DB_TABLEという名前のテーブルを削除する
con.execute('''DROP TABLE ''' + 'TEST_DB_TABLE')
except sqlite3.OperationalError:
print("The table's already been removed")
# Connectionオブジェクトを閉じる
conn.close()
# dbファイルの削除
os.remove('./' + 'Test.db')
SQLite3のデータベース操作:テーブルデータの挿入
次は、前述で作成したデータベーステーブルの対して、テーブルデータの挿入(保存)を行います。
Cursorオブジェクトの作成までは、前述のテーブル作成手順と同じです。
その後、**INSERT INTO**というSQLコマンドによって、テーブルデータの挿入(保存)を行います。
# テーブルデータの挿入
def insert_table(table_name,i_table):
# Connectionオブジェクトの作成
conn = sqlite3.connect('Test.db')
# Cursorオブジェクトの作成
con = conn.cursor()
try:
# テーブルを作成する為のコマンドを作成
command = 'INSERT INTO '+ table_name + ' VALUES('
for i in range(len(i_table)):
command += '?,'
command = command[:-1] + ')'
# テーブルを挿入
con.execute(command, i_table)
except sqlite3.OperationalError:
print("couldn't insert table")
# 変更を保存する
conn.commit()
SQLite3のデータベース操作:テーブルデータの参照
そして次は、先ほど保存したテーブルデータを参照する方法を説明します。
SELECTと呼ばれるSQLコマンドによってテーブルデータを読み出します。Cursorオブジェクトconに対して、fetchallを呼び出すことで、それぞれの要素を取得することができます。
# テーブルデータの参照
def refer_table_data(table_name):
# Connectionオブジェクトの作成
conn = sqlite3.connect('Test.db')
# Cursorオブジェクトの作成
con = conn.cursor()
# Selectコマンド実行
con.execute('SELECT ' + '*' + ' from ' + table_name)
for item in con.fetchall():
print(item)
SQLite3のデータベース操作:定義した関数の実行処理
最後に、上で定義した4つの関数の呼び出しを行います。
ここでは、作成し、挿入するテーブルの名前は、「TEST_DB_TABLE」に設定しています。
テーブル「TEST_DB_TABLE」には、「Date1」と「Date2」という2つのstring型の文字列のデータが入っていることになります。
if __name__ == '__main__':
# テーブルの作成
create_table()
# テーブルデータの挿入
i_table = ['Date1','Date2']
insert_table('TEST_DB_TABLE',i_table)
# テーブルデータの参照
refer_table_data('TEST_DB_TABLE')
# テーブルの削除
delete_table()