cx_Oracle - "期待无或字符串"

时间:2015-09-09 01:34:45

标签: python python-2.7 cx-oracle

我正在使用以下cx_Oracle版本

>>> cx_Oracle.version
'5.0.3'

我在执行查询时遇到此异常

"期待无或字符串"

正在以这种方式执行查询

cursor.execute("SELECT * FROM APP_STORE WHERE STORE=:STORE %s" %(order_clause),{'STORE':STORE})

可能是什么原因?之前在流程中执行的类似查询工作正常,但这个查询没有。

对此有一些指导。

1 个答案:

答案 0 :(得分:0)

您正在错误地构建光标。由于您传递了字典,因此您首先要准备好查询:

cursor.prepare("SELECT * FROM APP_STORE WHERE STORE=:STORE %s" %(order_clause))

然后执行它并传递None作为第一个参数。

results = cursor.execute(None, {'STORE':STORE})

如果您希望更改STORE参数并再次运行查询,您现在需要做的就是修改字典并重新运行execute语句。不再需要prepare

可以在Oracle+Python Querying best practices documentation找到更多信息。我上面提供的信息在" Bind Variable Patterns"部分(似乎没有直接链接)