我正在尝试根据用户输入的内容查询Oracle表中特定ID的记录。
这是我的代码:
import cx_Oracle
con = cx_Oracle.connect('dbuser/dbpassword@oracle_host/service_ID')
cur = con.cursor()
id_number = raw_input('What is the ID Number?')
cur.execute('select id, info from oracle_table_name where id=:id_number')
for result in cur:
print "test", result
cur.close()
con.close()
弹出以下错误:cx_Oracle.DatabaseError: ORA-01008: not all variables bound
当我删除用户输入和变量替换并运行查询时,一切正常。
答案 0 :(得分:2)
:id_number
是一个参数(变量)。你需要提供它的价值。
execute
方法接受参数作为第二个参数。
实施例:
query = "select * from some_table where col=:my_param"
cursor.execute(query, {'my_param': 5})
查看http://cx-oracle.readthedocs.org/en/latest/cursor.html#Cursor.execute
上的文档答案 1 :(得分:1)
我为user_value指定了一个名字:
user_value = raw_input('What is the ID Number?')
然后在execute语句中引用它:
cur.execute(query, {'id': (user_value)})
感谢Radoslaw-Roszkowiak的协助!!