免责声明:这个答案更具实验性和实用性,但也许值得一提.

我发现类pandas.io.sql.SQLTable已命名参数键,如果为其指定字段名称,则此字段将成为主键:

不幸的是,你不能只从DataFrame.to_sql()函数传递这个参数.要使用它你应该:

>创建pandas.io.SQLDatabase实例

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

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

>定义与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)

>使用您的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()函数来方便地使用此变通方法.

在python中用sql创建表_Python Pandas to_sql,如何用主键创建表?相关推荐

  1. python办公自动化(9)利用pandas的行列转换处理排班表

    python办公自动化(9)利用pandas的行列转换处理排班表 原始数据: 处理效果: 1.pandas行转列 #!/usr/bin/python # -*- coding: gbk -*- imp ...

  2. mysql主键创建非聚集索引_什么是聚集索引,非聚集索引,索引覆盖,回表,索引下推...

    聚集索引 我们先建如下的一张表 CREATE TABLE `student` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '学号',`name` var ...

  3. 学习笔记 - Postgres如何创建有自增主键的表

    1.MySQL迁移到Postgres 之前用mysql习惯了,所以建表都是有自增主键的,建表规范里面大部分都是这样约定的,比如:(`id` BIGINT (11) UNSIGNED NOT NULL ...

  4. SQL Server2019数据库查询所有数据库名、表名、表结构、表字段、主键方法演示,执行sql提示对象名‘user_tab_columns‘、 ‘user_cons_columns‘ 无效问题解决

    SQL Server2019 数据库查询所有数据库名.表名.表结构.表字段.主键方法演示 第一章:查询方法 ① 查询所有数据库名 ② 查询所有表名方法 ③ 查询表结构.表字段方法 ④ 查询主键方法 第 ...

  5. Sql Server获取数据库名,表信息,字段信息,主键信息等

    --Sql Server获取数据库名,表信息,字段信息,主键信息等--获取所有数据库名: SELECT name FROM master..sysdatabases WHERE name NOT IN ...

  6. oracle 主键 删除表_oracle删除表字段和oracle表增加字段

    这篇文章主要介绍了oracle表增加字段.删除表字段修改表字段的使用方法,大家参考使用吧 添加字段的语法:alter table tablename add (column datatype [def ...

  7. oracle查询表的字段类型有哪些,oracle中查询表的信息,包括表名,字段名,字段类型,主键(精)...

    通过搜索摸索,总结了一下 oracle 中查询表的信息,包括表名,字段名,字段类型,主键, 外键唯一性约束信息,索引信息查询 SQL 如下,希望对大家有所帮助: 1.查询出所有的用户表 select ...

  8. oracle执行计划走索引类型,SQL执行计划问题:where条件是主键(NUMBER类型字段)LIKE  :VAR,为什么执行计划不走索引?...

    SQL执行计划问题:where条件是主键(NUMBER类型字段)LIKE  :VAR,为什么执行计划不走索引? 中文社区 (MOSC) 数据库 (MOSC) 6 Replies Last update ...

  9. Spring Data JAP框架处理表关系的步骤(一对一主键关联

    Spring Data JAP框架处理表关系的步骤: 1)确定表和表之间的关系 2)对应表创建实体类 3)在实体类配置注解关联关系 4)测试 一对一表关系的实现方案(主键关联: 1 在Customer ...

最新文章

  1. (七)STM32的RTC简单操作
  2. pgsql 前10条_白沙湾南片区11条新建道路最新进度及建成时间,已建成一条!还有一条将通车...
  3. 求一个二维整数数组最大子数组之和,时间复杂度为N^2
  4. WPF 用代码实现WrapPanel右侧自动对齐(解决多余空白问题)
  5. 现代软件工程 (备份)
  6. Javascript第六章JavaScript用new创建对象第一课
  7. 吐血整理!必须收藏,44条代码优化细节
  8. 黄色光纤跳线、橙色光纤跳线、蓝色光纤跳线区别
  9. <机器学习 房价预测 >对贝壳租房网 信息爬取 及处理。
  10. EAS序时簿界面显示,不再忽略数值零
  11. 主引导记录(MBR)分析
  12. 儿童台灯怎么选对眼睛好?分享央视推荐的护眼灯
  13. 【疑难解决】H265编码流媒体播放器EasyPlayer.js播放HLS H265视频流,遇到黑屏如何排查?
  14. 武汉工程大学信息与计算科学专业面向对象程序设计课程设计题
  15. windows10系统设置选项里没有触摸板选项
  16. 你要的摄像头检测来啦
  17. 安全生产六步法是什么_海孜煤矿安全生产管理“六步法”实施办法.doc
  18. mysql字段类型详解_MySQL字段类型详解
  19. PL2303GT‎‎ ‎‎USB 转 RS232 桥接控制器‎
  20. android+3g移植,惊呆!普耐尔MOMO迷你3G移植MIUI系统

热门文章

  1. 转行软件测试两年了,听大神说测试前途是IT里最low的,我慌了......
  2. 【转】谈谈CICS ENQ,DEQ的使用_REDEMPTION_百度空间
  3. html网页鼠标样式、css精灵、iconfont、过渡动画笔记
  4. 学习前端怎么样?优势有哪些
  5. Elixir-Atoms
  6. 鄙人最近搞的js购物车程序
  7. dubbo下Dubbo协议注册中心理解SimpleRegistryService之register,getRegistered,notify方法理解注释
  8. 论文复刻:排污权机制是否提高了企业全要素生产率(附代码、数据、原文献)
  9. 数字孪生隧道为智慧交通运营保驾护航
  10. safari 扩展_为什么构建Safari应用扩展程序是2020年的噩梦