有什么方法可以使用SQLAlchemy自动将列数据类型加载到SQLite中?

时间:2019-05-08 10:37:30

标签: python sqlite sqlalchemy

我有一个大型的csv文件,其中包含将近100列的数据类型,我想使用sqlalchemy加载到sqlite数据库中。这将是一件持续不断的事情,我将定期将新数据作为新表加载到数据库中。看来应该没什么大不了的,但是我什么也做不了。

到目前为止,我看过的所有解决方案都在创建表时明确定义了列。

这是我目前所拥有的一个最小示例(列少得多)。

from sqlalchemy import *
import pandas as pd

values_list = []
url = r"https://raw.githubusercontent.com/amanthedorkknight/fifa18-all-player-statistics/master/2019/data.csv"
df = pd.read_csv(url,sep=",")   
df = df.to_dict()
metadata = MetaData()
engine = create_engine("sqlite:///" + r"C:\Users\...\example.db")
connection = engine.connect()
# I would like define just the primary key column and the others be automatically loaded...
t1 = Table('t1', metadata, Column('ID',Integer,primary_key=True))
metadata.create_all(engine)
stmt = insert(t1).values()
values_list.append(df)
results = connection.execute(stmt, values_list)
values_list = []
connection.close()

1 个答案:

答案 0 :(得分:0)

感谢您的建议。经过一段时间的搜索后,一个不错的解决方案是使用sqlathanor软件包。有一个称为generate-model-from-csv的函数,该函数使您可以读取csv(也可用于字典,json等)并直接构建sqlalchemy模型。它对数据类型的识别并不完善,但是如果您有很多列,那么肯定会为您节省一些时间。

https://sqlathanor.readthedocs.io/en/latest/api.html#generate-model-from-csv