小编典典

pyodbc execute命令不接受?参数正确吗?

sql

这段代码:

cursor.execute('select RLAMBD from ?', OPTable)
print cursor.fetchone().RLAMBD

产生此错误:

ProgrammingError: ('42S02', '[42S02] [Oracle][ODBC][Ora]ORA-00903: invalid table name\n (903) (SQLExecDirectW)')

OPTable是一个字母数字字符串,它是从另一个数据库查询中构建的,该数据库查询包含我要从中选择的表名。

以下代码在同一脚本中也可以正常工作。

sql = 'select RLAMBD from ' + OPTable
cursor.execute(sql)
print cursor.fetchone().RLAMBD

我猜想以这种方式构建sql语句并没有什么大不了的,但是我只是不明白为什么它不接受??参数。我什至在使用?的同一脚本中还有另一个查询。参数化并可以正常工作。但是,使用raw_input函数生成用于工作查询的参数。这两个字符串的格式化方式之间是否存在细微的区别,这使我无法使查询正常工作?谢谢你们。

我正在运行python 2.7和pyodbc 3.0.10。


阅读 221

收藏
2021-04-14

共1个答案

小编典典

参数占位符不能用于表示对象名称(例如,表或列名称)或SQL关键字。它们仅用于传递数据 ,例如数字,字符串,日期等。

2021-04-14