データ分析の際に、一旦データベースに情報を移してから逐一取り出すということを頻繁に行いますが、その際に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の場合はそちらもダブルクオーテーションを追加する必要あり。

