Python Oracle,插入 None 错误
Python Oracle, inserting None error
按以下方式将 None 值插入 oracle 时出现错误:
host = ('value1', 'value2', None, None)
sql_insert = "INSERT INTO sm9_data_hostname (field1, field2, field3, field4) VALUES ( :1, :2, :3, :4)"
conn_link.execute(sql_insert, host)
connection.commit()
错误是:
cx_Oracle.DatabaseError: ORA-01036: 非法变量 name/number
如果我使用 'Null' 而不是 None,则插入有效。
我看不出这个查询有什么问题,因为参数应该用 Null 替换 none。或者这是错误的假设?
谢谢,
艾萨克
我完全没有使用 cx_Oracle
的经验,但我建议您尝试使用命名占位符作为替代方法。比如下面
conn_link.execute(
"INSERT INTO sm9_data_hostname (field1, field2, field3, field4) "
"VALUES (:field1, :field2, :field3, :field4)",
dict(field1="value1", field2="value2", field3=None, field4=None)
)
按以下方式将 None 值插入 oracle 时出现错误:
host = ('value1', 'value2', None, None)
sql_insert = "INSERT INTO sm9_data_hostname (field1, field2, field3, field4) VALUES ( :1, :2, :3, :4)"
conn_link.execute(sql_insert, host)
connection.commit()
错误是: cx_Oracle.DatabaseError: ORA-01036: 非法变量 name/number
如果我使用 'Null' 而不是 None,则插入有效。 我看不出这个查询有什么问题,因为参数应该用 Null 替换 none。或者这是错误的假设?
谢谢, 艾萨克
我完全没有使用 cx_Oracle
的经验,但我建议您尝试使用命名占位符作为替代方法。比如下面
conn_link.execute(
"INSERT INTO sm9_data_hostname (field1, field2, field3, field4) "
"VALUES (:field1, :field2, :field3, :field4)",
dict(field1="value1", field2="value2", field3=None, field4=None)
)