【问题标题】:Query database with parameter using pandas.read_sql使用 pandas.read_sql 查询带参数的数据库
【发布时间】: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


    【解决方案1】:

    在这里找到解决方案。只需将d1 定义为date(2020,02,20)

    How to parameterize datestamp in pyODBC query?

    【讨论】:

      最近更新 更多