我正在尝试使用 pandas read_sql 函数从 sqlite DB 中查询一些数据。我需要使用包含 in 子句(列表)和一些静态参数的参数化 SQL。
以下是我的查询
battingDataQuery = ('SELECT ID, MATCH_DATE, ROLE, DOWN_NUM, NAME, RUNS,'
'MATCH_ID, TEAM_NAME, VERSUS_TEAM_NAME, GROUND_NAME '
'FROM BATTING_DATA WHERE ID in ({1}) '
'AND DOWN_NUM < {0} AND MATCH_TYPE = {0}')
我已经使用格式适当地添加了占位符
battingDataQuery = battingDataQuery.format('?', ','.join('?' * len(playerIdList)))
我生成的 SQL 如下
'SELECT ID FROM BATTING_DATA WHERE ID in (?,?,?,?,?) AND DOWN_NUM < ? AND MATCH_TYPE = ?'
我被困在我发送参数的最后一部分,如下所示:
battingDataDF = pd.read_sql_query(battingDataQuery , conn, params=(playerIdList,battingDownNum,'\'T20\''))
使用它时出现以下错误
提供的绑定数量不正确。当前语句使用 7,并且提供了 3 个。
我尝试使用以下变体,但仍然出现相同的错误
battingDataDF = pd.read_sql_query(battingDataQuery , conn, params=[playerIdList,battingDownNum,'\'T20\'']) # same error
battingDataDF = pd.read_sql_query(battingDataQuery , conn, params=[playerIdList,battingDownNum,'\'T20\'']) # same error
battingDataDF = pd.read_sql_query(battingDataQuery , conn, params=[tuple(playerIdList),battingDownNum,'\'T20\'']) # same error