尝试将 pandas 数据帧与 sql select 查询一起使用

Trying to use pandas Dataframes with sql select query

所以我是 Python 和 sql 的新手。 我正在使用 pandas 和 pyodbc。

firstQuery = pd.read_sql_query(
        '''
            SELECT  PORel.RelQty, PODetail.POLine, PORel.PORelNum, PORel.DueDate
            FROM *****.Erp.PODetail INNER JOIN *****.Erp.PORel ON 
            ((PODetail.Company = PORel.Company) and (PODetail.PONUM = PORel.PONum)) and 
            (PODetail.POLine = PORel.POLine)
            WHERE  PODetail.PONUM = ? and PODetail.Company= ? and PODetail.PartNum = ?
        ''', data, dfRaw )

dfRaw 是一个包含 3 列的数据框。

  po_number company cyt_part_number
0    111111    TEST        abc12345

这是我在尝试执行代码时收到的错误:

('07002', '[07002] [Microsoft][ODBC SQL Server Driver]COUNT field incorrect or syntax error (0) (SQLExecDirectW)')

我想知道是否有人可以给我一些指示,说明它失败的原因以及有关如何使其正常工作的任何有用提示。

如果需要,我可以提供更多数据。 提前致谢。

您正在传递一个 pandas 数据框作为参数,而 read_sql_query 需要一个列表、元组或字典。您可以改为将第一行作为列表传递:

firstQuery = pd.read_sql_query(
        '''
            SELECT  PORel.RelQty, PODetail.POLine, PORel.PORelNum, PORel.DueDate
            FROM *****.Erp.PODetail INNER JOIN *****.Erp.PORel ON 
            ((PODetail.Company = PORel.Company) and (PODetail.PONUM = PORel.PONum)) and 
            (PODetail.POLine = PORel.POLine)
            WHERE  PODetail.PONUM = ? and PODetail.Company= ? and PODetail.PartNum = ?
        ''', data, params = dfRaw.iloc[0].tolist() )