使用sqlalchemy的pandas.read_sql中的使用错误

时间:2018-12-15 14:00:17

标签: python pandas sqlalchemy

请考虑以下代码:

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.bindsqlchemy的引擎对象。

我收到以下错误:

{TypeError}read_sql() got an unexpected argument 'param'

我的函数调用出了什么问题?

1 个答案:

答案 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})