Database kueri dengan parameter menggunakan pandas.read_sql

pertanyaan serupa ditanyakan. Tujuannya adalah untuk membuat fungsi yang dijelaskan di sini:

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

Ini berfungsi pada database dengan driver SQL Server, tetapi tidak berfungsi pada driver Microsoft ODBC untuk Oracle.

Ketika saya memberi, misalnya d1 = '2020-02-20' dan d2 = '2020-02-25', saya mendapatkan kesalahan ('HY004', '[HY004] [Microsoft][ODBC Driver Manager] SQL data type out of range (0) (SQLBindParameter)')

Saya mengerti di Oracle, Anda memerlukan DATE 'YYYY-MM-DD' untuk menyatakan tanggal, yang berbeda dari server SQL di mana Anda bisa menggunakan 'YYYY-MM-DD' saja.

Saya sudah mencoba menambahkan DATE di depan ? tetapi tidak berhasil. Ada ide?


person idkanythingaboutcoding    schedule 26.02.2020    source sumber


Jawaban (1)


Menemukan solusi di sini. Definisikan saja d1 sebagai date(2020,02,20).

Bagaimana cara membuat parameter stempel tanggal dalam kueri pyODBC?

person idkanythingaboutcoding    schedule 26.02.2020