这段代码:
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。
参数占位符不能用于表示对象名称(例如,表或列名称)或SQL关键字。它们仅用于传递数据 值 ,例如数字,字符串,日期等。