База данных запросов с параметром с использованием pandas.read_sql

Был задан аналогичный вопрос. Цель состоит в том, чтобы создать функцию, описанную здесь:

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 для 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' для обозначения даты, которая отличается от SQL-сервера, где вы можете просто использовать 'YYYY-MM-DD'.

Я пробовал добавить DATE перед ?, но не работает. Любые идеи?


person idkanythingaboutcoding    schedule 26.02.2020    source источник


Ответы (1)


Нашел решение здесь. Просто определите d1 как date(2020,02,20).

Как параметризовать отметку даты в запросе pyODBC?

person idkanythingaboutcoding    schedule 26.02.2020