Ale*_*ore 7 python database sqlite sqlalchemy pandas
我目前正在使用Pandas to_sql,以便将大型数据帧放入SQL数据库.我正在使用sqlalchemy来连接数据库,该进程的一部分是定义数据库表的列.
我的问题是,当我在数据帧上运行to_sql时,它如何知道数据帧中的哪个列进入数据库中的哪个字段?它是在查看数据框中的列名并在数据库中查找相同的字段吗?它是变量所在的顺序吗?
以下是一些便于讨论的示例代码:
engine = create_engine('sqlite:///store_data.db')
meta = MetaData()
table_pop = Table('xrf_str_geo_ta4_1511', meta,
Column('TDLINX',Integer, nullable=True, index=True),
Column('GEO_ID',Integer, nullable=True),
Column('PERCINCL', Numeric, nullable=True)
)
meta.create_all(engine)
for df in pd.read_csv(file, chunksize=50000, iterator=True, encoding='utf-8', sep=',')
df.to_sql('table_name', engine, flavor='sqlite', if_exists='append', index=index)
Run Code Online (Sandbox Code Playgroud)
有问题的数据框有3列TDLINX,GEO_ID和PERCINCL
jor*_*ris 12
答案确实是你的建议:它正在查看列名称.因此匹配列名很重要,顺序无关紧要.
为了完全正确,大熊猫实际上不会检查这一点.什么to_sql
引擎盖下所做的是执行要插入数据作为字典提供了一个INSERT语句,然后它只是到数据库驱动程序来处理这个问题.
这也意味着pandas不会检查dtypes或列数(例如,如果不是数据库的所有字段都作为数据框中的列出现,这些将填充数据库中这些行的默认值).
归档时间: |
|
查看次数: |
8482 次 |
最近记录: |