尝试将 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() )
所以我是 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() )