如何插入'NULL'价值观纳入PostgreSQL数据库使用蟒蛇?
-
26-09-2019 - |
题
是有一个很好的做法进入 NULL
关键值PostgreSQL数据库时,一个变量 None
在蟒蛇?
运行这种查询:
mycursor.execute('INSERT INTO products (user_id, city_id, product_id, quantity, price) VALUES (%i, %i, %i, %i, %f)' %(user_id, city_id, product_id, quantity, price))
结果在一个 TypeError
例外的时候 user_id
是 None
.
怎么可能 NULL
是插入到数据库时,一个价值是 None
, 使用的 psycopg2
司机?
解决方案
插入空值的数据库中你有两个选择:
- 省略这一领域从你插入语句,或者
- 使用
None
也:防止SQL-注射不应使用正常字符串插进你的查询。
你应该通过两个(2)论 execute()
, ,例如:
mycursor.execute("""INSERT INTO products
(city_id, product_id, quantity, price)
VALUES (%s, %s, %s, %s)""",
(city_id, product_id, quantity, price))
替代#2:
user_id = None
mycursor.execute("""INSERT INTO products
(user_id, city_id, product_id, quantity, price)
VALUES (%s, %s, %s, %s, %s)""",
(user_id, city_id, product_id, quantity, price))
其他提示
使用当前psycopg,代替无,使用一个变量设置为 'NULL'。
variable = 'NULL'
insert_query = """insert into my_table values(date'{}',{},{})"""
format_query = insert_query.format('9999-12-31', variable, variable)
curr.execute(format_query)
conn.commit()
>> insert into my_table values(date'9999-12-31',NULL,NULL)
一个更简单的方法,其还与高数量的列实用:
让row
是要被插入可包含None
值的列表。到将其插入的PostgreSQL我们如下
values = ','.join(["'" + str(i) + "'" if i else 'NULL' for i in row])
cursor.execute('insert into myTable VALUES ({});'.format(values))
conn.commit()
不隶属于 StackOverflow