0

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

4

1 回答 1

1

通常 Postgresql 执行将字符串值自动转换为整数列的整数。因此,如果字符串参数包含整数或为无,则通常可以安全地对整数列使用 %(priority)s 之类的字符串格式化程序。如果字符串设置为无,则该列将分配为 NULL。

于 2012-07-02T01:46:30.057 回答