【发布时间】:2021-04-02 00:33:36
【问题描述】:
在将字符串参数传递到 pd.read_sql_query 时如何解决此错误?使用 Python 2.7。
table = 'mytable1'
query = (
"SELECT * "
"FROM ? "
)
df = pd.read_sql_query(sql=query, con=conn, params=(table))
pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT * FROM ? ': near "?": syntax error
我尝试将? 替换为% 和%s,但它返回相同的错误。
以下相等示例按预期工作:
query = (
"SELECT * "
"FROM mytable1 "
"WHERE name = ? "
)
df = pd.read_sql_query(sql=query, con=conn, params=('cat',))
注意params中的逗号好像是必须的,否则返回这个错误:Incorrect number of bindings supplied. The current statement uses 1, and there are 7 supplied.
我也尝试过params=(table,) 我的问题,但没有运气。我知道我也可以使用"FROM '{t}' ").format(t=table) 来执行此操作,但我想了解如何使用 Pandas 的内置参数选项。
【问题讨论】:
-
也许用
%替换?? -
和
params = [table]? -
@QuangHoang,是的,同样的错误,这个错误是持久的!
-
Python 中的
(table)和(table,)之间存在差异。后者是一个元组,而formal是一个字符串,即table。 -
@QuangHoang 是的,但文档说它可以采用列表或元组!
标签: python sql pandas parameters