python中怎么用pandas生成表格_Python Pandas to_sql,如何用主键创建表?

automap_base来自sqlalchemy.ext.automap(tablenamedict是一个只有Pandas表的dict):metadata = MetaData()

metadata.reflect(db.engine, only=tableNamesDict.values())

Base = automap_base(metadata=metadata)

Base.prepare()

除了一个问题,automap需要表有一个主键。好吧,没问题,我肯定熊猫有办法指出主键。。。不。这里有点老套:for df in dfs.keys():

cols = dfs[df].columns

cols = [str(col) for col in cols if 'id' in col.lower()]

schema = pd.io.sql.get_schema(dfs[df],df, con=db.engine, keys=cols)

db.engine.execute('DROP TABLE ' + df + ';')

db.engine.execute(schema)

dfs[df].to_sql(df,con=db.engine, index=False, if_exists='append')

我遍历DataFrames的dict,得到要用于主键的列的列表(即那些包含id),使用get_schema创建空表,然后将DataFrame附加到表中。

既然有了这些模型,就可以显式地将它们命名并与session.query一起使用(即User = Base.classes.user),或者创建一个包含所有类的dict,如下所示:alchemyClassDict = {}

for t in Base.classes.keys():

alchemyClassDict[t] = Base.classes[t]

并查询:res = db.session.query(alchemyClassDict['user']).first()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值