sql - pyodbc 执行命令不接受?参数正确?

标签 sql python-2.7 oracle11g pyodbc

这段代码:

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 关键字。它们仅用于传递数据,例如数字、字符串、日期等。

关于sql - pyodbc 执行命令不接受?参数正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42514642/

相关文章:

java - MySQL - 对象不为空?

python - 将 CSV 文件读入 __init__ 类中的字段?

Python 正则表达式将一行分成 4 部分

sql - oracle SQL查询可以执行从表中选择的字符串查询吗?

sql - Oracle 中依赖于字段值的约束

sql - 这是什么样的代码?

sql - 删除 jsonb 中的所有空字符串值 | Postgres

java - 无法使用 Java/JSP 将数据插入 Apache Derby 数据库

Django反向查询集包含列表中的所有值

windows - 如何在 Windows 中为 Oracle DB 源 sql 文件