请考虑以下代码:
import pandas as pd
pd.read_sql("SELECT * FROM foo_schema.run_info WHERE id=:param order by run_id desc", s.bind, **{'param':5})
s.bind
是sqlchemy
的引擎对象。
我收到以下错误:
{TypeError}read_sql() got an unexpected argument 'param'
我的函数调用出了什么问题?
答案 0 :(得分:2)
从docs,
pd.read_sql? ... params : list, tuple or dict, optional, default: None
您正在做的是解压缩字典,因此将其作为关键字参数传递。有关更多信息,请参见Understanding kwargs in Python。
传递参数的正确方法是:
pd.read_sql(... params={'param':5})
正如@IljaEverilä专家提到的那样,您应该将查询包装在对text
的调用中,以便正确解析参数语法。
from sqlalchemy import text
pd.read_sql(text(query), s.bind, params={'param':5})