PyGreSQL为整数字段的NULL

时间:2010-02-26 14:49:39

标签: python database pygresql

我试图将一些行插入到一个具有整数字段的表中,该字段可以为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值?

1 个答案:

答案 0 :(得分:1)

通常,Postgresql会对整数列执行字符串值自动转换为整数。因此,如果字符串参数包含整数或者为None,则对于整数列使用%(priority)s等字符串格式化程序通常是安全的。如果字符串设置为None,则该列将被指定为NULL。