加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Pandas to_sql如何确定将哪个dataframe列放入哪个数据

发布时间:2020-12-16 23:00:39 所属栏目:Python 来源:网络整理
导读:我目前正在使用Pandas to_sql,以便将大型数据帧放入SQL数据库.我正在使用sqlalchemy来连接数据库,该进程的一部分是定义数据库表的列. 我的问题是,当我在数据帧上运行to_sql时,它如何知道数据帧中的哪个列进入数据库中的哪个字段?它是在查看数据框中的列名并
我目前正在使用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',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)

有问题的数据框有3列TDLINX,GEO_ID和PERCINCL

解决方法

答案确实是你的建议:它正在查看列名称.因此匹配列名很重要,顺序无关紧要.

为了完全正确,大熊猫实际上不会检查这一点. to_s_s在幕后做的是执行一个insert语句,其中要插入的数据作为dict提供,然后由数据库驱动程序来处理它.这也意味着pandas不会检查dtypes或列数(例如,如果不是数据库的所有字段都作为数据帧中的列出现,这些将填充数据库中这些行的默认值).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读