【问题标题】:Python Oracle, inserting None errorPython Oracle,插入无错误
【发布时间】:2016-01-09 21:01:15
【问题描述】:

以以下方式将 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: 非法变量名/编号

如果我使用“Null”而不是“None”,则插入有效。 我看不出这个查询有什么问题,因为参数应该用 Null 替换 none。还是这是错误的假设?

谢谢, 艾萨克

【问题讨论】:

  • 您是否尝试过使用命名占位符?例如:field1,并作为字典传递?
  • 我没有,但现在试试看是否有效,谢谢
  • 看来成功了,谢谢!
  • 我已经发布了它作为繁荣的答案!

标签: python oracle cx-oracle


【解决方案1】:

我完全没有使用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)
)

【讨论】:

    猜你喜欢
    • 2013-02-21
    • 1970-01-01
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    相关资源
    最近更新 更多