如何使用Python将NULL值插入PostgreSQL数据库?

问题描述 投票:0回答:1

我有元组列表,其数据如下:

list1 = [(1100, 'abc', '{"1209": "Y", "1210": "Y"}'), (1100, 'abc', None)]

def insert_sample_data(col_val):
    cur = self.con.cursor()
    sql = """insert into sampletable values {}""".format(col_val)
    cur.execute(sql)
    self.con.commit()
    cur.close()

values1 = ', '.join(map(str, list1))  #bulk insert
insert_sample_data(values1)

表结构:ssid int,name varchar,rules jsonb

当我试图插入数据但它会抛出一个错误说“插入列”没有“不存在”。我们如何使用'Null'或'None'将数据加载到表中?

我看了解这个解决方案,但在这种情况下How to insert 'NULL' values into PostgreSQL database using Python?无济于事

python python-3.x postgresql
1个回答
1
投票

正如@shmee所说,你需要使用类似executemany的东西并参数化你的值,而不是使用易受SQL注入攻击的format

我会修改你的代码如下:

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
© www.soinside.com 2019 - 2024. All rights reserved.