我试图将一些行插入到一个具有整数字段的表中,该字段可以为NULL:
cur.execute("INSERT INTO mytable (id, priority) VALUES (%(id)d, %(priority)d)", \
{'id': id, 'priority': priority})
优先级变量是整数或None
。这在优先级具有整数值时有效,但是,当它为None
时,我收到以下错误:
internal error in 'BEGIN': int argument required
我注意到对于Python的字符串格式化,一般不能使用None
作为要格式化的整数的值 - 它会抛出pgdb抛出的相同错误。但是,当我将格式字符串更改为%(priority)s
时,错误将更改为:
internal error in 'BEGIN': unsupported format character 'W' (0x57) at index 60
我猜那是因为我正在尝试将字符串导入整数字段。
如何导入NULL值?
答案 0 :(得分:1)
通常,Postgresql会对整数列执行字符串值自动转换为整数。因此,如果字符串参数包含整数或者为None,则对于整数列使用%(priority)s等字符串格式化程序通常是安全的。如果字符串设置为None,则该列将被指定为NULL。