文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用python怎么往Postgresql数据库中插入一个Null值

2023-06-07 18:20

关注

使用python怎么往Postgresql数据库中插入一个Null值?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

python是什么意思

Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本语言,其最初的设计是用于编写自动化脚本,随着版本的不断更新和新功能的添加,常用于用于开发独立的项目和大型项目。

使用轮子的方法

def insert_sample_data(self, values): # added self since you are referencing it below with self.con.cursor() as cur:  sql = "insert into sampletable values (%s, %s, %s)" # Use %s for parameters  cur.executemany(sql, values) # Pass the list of tuples directly  self.con.commit() list1 = [(1100, 'abc', '{"1209": "Y", "1210": "Y"}'), (1100, 'abc', None)]self.insert_sample_data(list1) # pass the list directly

补充:python连接数据库插入数据库数据所碰到的坑

Python中插入数据时执行后,没有报任何错误,但数据库中并没有出现新添加的数据

原因:

缺少提交操作。

解决方案:

Python操作数据库时,如果对数据表进行修改/删除/添加等控制操作,系统会将操作保存在内存,只有执行commit(),才会将操作提交到数据库。

但是总有你想不到的坑代码如下:

import pymysql class Connection:  def __init__(self):  self.host = 'localhost'  self.user = 'nameit'  self.password = 'YES'  self.port = 3306  self.db = 'Xomai'   def connection(self):   db = pymysql.connect(host=self.host, user=self.user, password=self.password, port=self.port, db=self.db)  cur = db.cursor()  return db, cur  def create_table(self, cur):   sql = """CREATE TABLE `activity_feedback` (     `id` bigint(20) NOT NULL AUTO_INCREMENT,     `inst_id` bigint(20) DEFAULT NULL COMMENT 'ID',     `broadcast_id` bigint(20) DEFAULT NULL COMMENT '你好',     `student_id` bigint(20) DEFAULT NULL COMMENT '学生ID',     `content` varchar(1024) DEFAULT NULL COMMENT '学员内容',     `comment` varchar(255) DEFAULT NULL COMMENT '注释',     `gmt_create` datetime DEFAULT NULL,     `gmt_modify` datetime DEFAULT NULL,     PRIMARY KEY (`id`),     KEY `activity_feedback_student_id_index` (`student_id`)    ) ENGINE = InnoDB AUTO_INCREMENT = 1050 DEFAULT CHARSET = utf8mb4 COMMENT = '学员表'"""  cur.execute(sql) def insert(self, id, inst_id, broadcast_id, student_id, content, comment, gmt_create, gmt_modify):  sql = """INSERT INTO `activity_feedback` (     `id`, `inst_id`, `broadcast_id`, `student_id`, `content`, `comment`, `gmt_create`, `gmt_modify`)     VALUES ('{}','{}','{}','{}','{}','{}','{}','{}')""".format(id, inst_id, broadcast_id, student_id, content, comment, gmt_create, gmt_modify)  try:   self.connection()[1].execute(sql)   self.connection()[0].commit()  except:   self.connection()[0].rollback()if __name__ == '__main__': conn = Connection() conn.insert(123, 123, 324, 3451, 'ajdf', 'sdfs', '2013-2-5', '2014-3-4')

咋一看好像也有commit呀,怎么一直在数据库没有,再仔细看看

  try:   self.connection()[1].execute(sql)   self.connection()[0].commit()  except:   self.connection()[0].rollback()

connection()调用方法方法返回的对象是同一个吗?

并不是,心累,搞了半天,只怪自己还太嫩。

正确写法:

  try:   cons = self.connection()   cons[1].execute(sql)   cons[0].commit()   cons[0].close()  except:   cons[0].rollback()

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网行业资讯频道,感谢您对编程网的支持。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯