Запросите базу данных с параметром, используя pandas .read_sql - PullRequest
0 голосов
/ 26 февраля 2020

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

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

Я пытался добавить DATE перед ?, но не работает. Есть идеи?

1 Ответ

1 голос
/ 26 февраля 2020

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

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

...