Python 绑定变量

Python binding variables

我完全迷失在这里:

v_sql = "SELECT widget_name, widget_url FROM widget_calls WHERE widget_name = :widget"
cursor.execute(v_sql, widget=widget_name)
df_wid = pd.read_sql(v_sql, con=connection)

结果:

pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT widget_name, widget_url FROM widget_calls WHERE widget_name = :widget': ORA-01008: not all variables bound

执行中有 1 个绑定变量、:widget 和 1 个声明。那么,我错过了什么?

cursor.execute调用和pd.read_sql调用完全无关。您正在执行两次查询,并丢弃了第一个结果。我会删除无用的 cursor.execute.

而对于 read_sql,您需要:

df_wid = pd.read_sql( v_sql, con=connection, params={'widget': widget_name})