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

时间:2017-02-28 17:01:21

标签: sql python-2.7 oracle11g pyodbc

此代码:

#!/usr/bin/env python

import lxml.etree as ET
import sys
import os

dom = ET.parse('gatetest.xml')
xslt = ET.parse('gate.xsl')
transform = ET.XSLT(xslt)
newdom = transform(dom)
print(ET.tostring(newdom, pretty_print=True))

产生此错误:

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

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

以下代码在同一个脚本中运行良好。

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

我想以这种方式构建sql语句并不是一件大事,但我只是不明白它为什么不接受?参数。我甚至在同一个脚本中使用了另一个查询?参数化,工作得很好。但是,使用raw_input函数生成工作查询的参数。这两个字符串可能被格式化的方式之间是否有一些细微差别,这阻止了我使查询工作?谢谢你们。

我正在运行python 2.7和pyodbc 3.0.10。

1 个答案:

答案 0 :(得分:2)

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