Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pyodbc execute command not accepting ? parameters correctly?

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.

like image 532
HudsonMC Avatar asked Mar 27 '26 08:03

HudsonMC


1 Answers

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..

like image 112
Gord Thompson Avatar answered Mar 29 '26 20:03

Gord Thompson