使用python怎么往Postgresql数据库中插入一个Null值?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
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()
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
亿速云「云数据库 MySQL」免部署即开即用,比自行安装部署数据库高出1倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。