【发布时间】:2023-12-20 07:09:01
【问题描述】:
询问了similar question。 目标是创建此处描述的函数:
def DB_Query(d1, d2):
conn = pyodbc.connect('DSN=DATASOURCE')
tbl = "SELECT TableA.Field_1 \
FROM TableA \
WHERE TableA.Date>=? AND TableA.Date<=?"
df_tbl= pd.read_sql_query(tbl, conn, params = (d1,d2))
conn.close
return df_tbl
这适用于带有 SQL Server 驱动程序的数据库,但不适用于 Microsoft ODBC for Oracle 驱动程序。
当我给,例如,d1 = '2020-02-20' 和 d2 = '2020-02-25',我得到错误
('HY004', '[HY004] [Microsoft][ODBC Driver Manager] SQL data type out of range (0) (SQLBindParameter)')
我理解在Oracle中,你需要DATE 'YYYY-MM-DD'来表达一个日期,这与你可以使用'YYYY-MM-DD'的SQL server不同。
我尝试在? 前面添加DATE,但不起作用。有什么想法吗?
【问题讨论】:
标签: sql pandas oracle parameter-passing pyodbc