栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python Pandas to_sql,如何用主键创建表?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python Pandas to_sql,如何用主键创建表?

免责声明:这个答案是实验性的,而不是实用的,但也许值得一提。

我发现该类

pandas.io.sql.SQLTable
已命名为参数
key
,如果您为其分配了字段名称,则该字段将成为主键:

不幸的是,您不能只从

Dataframe.to_sql()
函数传递此参数。要使用它,您应该:

  1. 创建

    pandas.io.SQLDatabase
    实例

    engine = sa.create_engine('postgresql:///somedb')

    pandas_sql = pd.io.sql.pandasSQL_builder(engine, schema=None, flavor=None)

  2. 定义函数类似于

    pandas.io.SQLDatabase.to_sql()
    但带有附加
    *kwargs
    参数的函数,该函数传递给
    pandas.io.SQLTable
    在内部创建的对象(我刚刚复制了原始
    to_sql()
    方法并添加了
    *kwargs
    ):

    def to_sql_k(self, frame, name, if_exists='fail', index=True,       index_label=None, schema=None, chunksize=None, dtype=None, **kwargs):if dtype is not None:    from sqlalchemy.types import to_instance, TypeEngine    for col, my_type in dtype.items():        if not isinstance(to_instance(my_type), TypeEngine): raise ValueError('The type of %s is not a SQLAlchemy '       'type ' % col)table = pd.io.sql.SQLTable(name, self, frame=frame, index=index,      if_exists=if_exists, index_label=index_label,      schema=schema, dtype=dtype, **kwargs)table.create()table.insert(chunksize)
  3. 使用

    SQLDatabase
    实例和要保存的数据框调用此函数

    to_sql_k(pandas_sql, df2save, 'tmp',    index=True, index_label='id', keys='id', if_exists='replace')

我们得到类似

CREATE TABLE public.tmp(  id bigint NOT NULL DEFAULT nextval('tmp_id_seq'::regclass),...)

在数据库中。

PS当然,您可以安装monkey-patch

Dataframe
io.SQLDatabase
io.to_sql()
可以方便地使用此替代方法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/411686.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号