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)
)