【SQLite】PythonからDBに接続する【Python】
PythonからSQLite3のDBに接続する
pipでSQLite3パッケージのインストールをするため、別途DBソフトとしてSQLite3をインストールする必要はない。
①DB作成処理
CSVファイルからSQLite3のDBを作成する
処理内容
- CSVファイルの内容をPandasのデータフレームに読み込む
- DBを新規に作成し、テーブルにデータフレームを書き込む
- 既存のテーブル名だった場合は置き換える
- 確認用のSQLを実行する
作成情報
- DB名:test.db
- テーブル名:menu_list
- カラム名
- menu
- category
- price
- cal
input.csv
menu, category, price, cal Blended coffee, drink, 270, 7 American coffee, drink, 270, 7 Espresso coffee, drink, 270, 10 Cappuccino, drink, 320, 87 Cafe latte, drink, 320, 93 Honey cafe au lait, drink, 340, 207 Soy milk tea, drink, 360, 88 Cafe mocha, drink, 410, 228 Tea, drink, 220, 2 Rooibos tea, drink, 250, 2 Royal milk tea, drink, 350, 116 Soy milk latte, drink, 390, 109 Cocoa, drink, 380, 244 Clock monsieur, toast, 320, 221 Toast, toast, 190, 254 Cheese toast, toast, 250, 317 Milk chocolate mousse, dessert, 390, 335 Stick shoe custard, dessert, 250, 257 Stick shoe chocolate, dessert, 250, 263 Baked cheese cake, dessert, 410, 335
コード
import sqlite3 import pandas as pd # CSVをデータフレームに読み込む df = pd.read_csv('input.csv') # データフレームをテーブルに書き込む db_name = 'test.db' conn = sqlite3.connect(db_name) df.to_sql('menu_list', conn, if_exists='replace') cur = conn.cursor() # 確認用のSQLを実行する query = 'select * from menu_list' for row in cur.execute(query): print(row) conn.close()
②DB接続処理
上記 ①DB作成処理 で作成したDBに接続する
処理内容
- PythonからSQLite3に接続する
- テーブル名、列名、値を変数に格納する
- 上記の変数を引数に指定してデータ取得関数を実行する
- 実行結果を表示する
対象テーブル名
- 上記で作成した menu_list を対象とする
実行SQL
- 変数 query に格納する
コード
import sqlite3 # SQLiteへの接続 def conn_to_postgres(): # 接続先データベース db_name = 'test.db' try: conn = sqlite3.connect(db_name) return conn except Exception as e: print('Error: データベースに接続できませんでした') print(e) return None # テーブルからデータを取得する def get_data_from_table(conn, table_name, column_name, value): try: cur = conn.cursor() query = f'select * from {table_name} where {column_name} = "{value}"' cur.execute(query) rows = cur.fetchall() return rows except Exception as e: print('Error: テーブルからデータを取得できませんでした') print(e) return [] if __name__ == '__main__': conn = conn_to_postgres() if conn: # 取得条件の設定 table_name = 'menu_list' column_name = 'menu' value = 'Rooibos tea' rows = get_data_from_table(conn, table_name, column_name, value) if rows: for row in rows: print(row) # データベースとの接続を終了する conn.close()