pyodbc execute command not accepting ? parameters correctly?

若如初见. 提交于 2020-06-23 09:30:06

问题


This code:

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

produces this error:

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

OPTable is an alphanumeric string which I've built from another database query which contains the table name I want to select from.

The following code works just fine within the same script.

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

I guess it's not a huge deal to build the sql statements this way, but I just don't understand why it's not accepting the ? parameters. I even have another query in the same script which uses the ? parameterization and works just fine. The parameters for the working query are produced using the raw_input function, though. Is there some subtle difference between the way those two strings might be formatted that's preventing me from getting the query to work? Thank you all.

I'm running python 2.7 and pyodbc 3.0.10.


回答1:


Parameter placeholders cannot be used to represent object names (e.g., table or column names) or SQL keywords. They are only used to pass data values, e.g., numbers, strings, dates, etc..



来源:https://stackoverflow.com/questions/42514642/pyodbc-execute-command-not-accepting-parameters-correctly

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!