サムネがコーヒーの記事は書きかけです。

Pandasを使用したSQLiteへのデータ登録のテンプレート

データ分析の際に、一旦データベースに情報を移してから逐一取り出すということを頻繁に行いますが、その際にSQLのエラーで時間を無駄にしたので、csvからSQLiteに登録するテンプレートを貼っておきます。

import sqlite3
import pandas as pd

db = sqlite3.connect("./db1.db")
c = db.cursor()
df = pd.read_csv("DATAF2.csv")


schemas = [i.replace(" ","_").replace(".","") for i in df.columns]
schemas_string = ",".join([f'{i} STRING' for i in schemas])
print(schemas_string)


table_name = "table1"
try:
    c.execute(
        f"CREATE TABLE {table_name}(" 
        + "id INTEGER PRIMARY_KEY,"
        +schemas_string
        + ")"
    )
except sqlite3.OperationalError as e:
    print(e)

for i,n in enumerate(df.itertuples()):
    insert_cols = ",".join([f'"{i}"' for i in schemas])
    insert_i = ",".join([f'"{i}"' for i in n[1:]])
    c.execute(
    f'INSERT INTO {table_name}("id",{insert_cols}) VALUES({i},{insert_i})'
    )


db.commit()
c.close()
db.close()

注意点

インサート命令のカラム名はダブルクオーテーションで囲む必要あり。さらに、値がSTRINGの場合はそちらもダブルクオーテーションを追加する必要あり。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です