Python-dataframe自增的存入pgsql

  • 首先需要把pgsql中的表设置为主键自增
    在navicat里尝试将主键设为serial格式报错
    经查找资料,需要:
  • 需要建一个主键自增策略
  • 将该自增策略添加到我们表格的主键上

自增策略:

CREATE SEQUENCE "模式名(public)"."自增策略名称"
INCREMENT 1
START 1
MINVALUE 1
MAXVALUE 99999999
CACHE 1;

添加:

alter table "模式名"."表名" alter column id set default nextval('自增策略名');

===================================================
自增的从Python导入pgsql
这里使用的copy_from()方法

  • 比较快
  • 这个方法可以指定列名

注意:今天从另一个博主那里学到了怎么处理copy_from方法传数据时有空值的处理办法。
前段时间用这个方法传数据的时候,遇到日期格式为空总报错

原博客的段落:“copy_from是默认将\N作为NULL值得,但是to_csv会将None值变为“”字符串,因此需要在copy_from中说明null=’’,即空字符串就是代表的NULL” (鼓掌,太感谢了,解决了困扰我很久的问题)

所以最终插入的语句为:

import io
output = io.StringIO()
df.to_csv(output, sep='\t', index=False, header=False) # df为dataframe格式的数据
output1 = output.getvalue()
cur.copy_from(io.StringIO(output1),table_name,null='',columns=list(df.columns))

==================================================
存入成功,id列自增,注意插入数据后删除,id从后面的序号开始自增,如果想要重新从1开始,需要另设置一个自增策略添加到表的主键上面

参考文献:
https://blog.csdn.net/china1987427/article/details/95120023
https://blog.csdn.net/weixin_43343423/article/details/103815206

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值