使用 where 子句中的变量从 sqlite3 读取 pandas 帧

reading pandas frame from sqlite3 using variable in where clause

我有一个相当大的 sqlite3 数据库,有时在尝试将其读入 Pandas 数据帧时会出现内存错误。我可以使用 WHERE 函数来限制框架的大小,这样它就可以工作了。

con = sqlite3.connect("myDB.db")
frame = pd_sql.read_frame('SELECT * FROM Basketball WHERE League == "NBA"', pinnyCon)

我该如何命名一个变量才能使这样的东西起作用?

def GetLeagueFrame(leagueName):
    con = sqlite3.connect("myDB.db")
    frame = pd_sql.read_frame('SELECT * FROM Basketball WHERE League == leagueName', pinnyCon)
    con.close()
    return frame

您可以使用带有 ? 的参数替换:

pd.read_sql_query('SELECT * FROM Basketball WHERE League = ?', con, params=(leagueName, ))

有关 params 关键字的更多说明,请参阅 read_sql_query docstring