我想使用 python 和 jaydebeapi 從 oracle DB 中選擇資料。我正在嘗試使用下一個腳本獲取資料:
bank_accounts = """
SELECT ACCOUNT_NUM, VALID_TO, CLIENT, CREATE_DT, UPDATE_DT
FROM ACCOUNTS where client = ?"""
clients = ['6948','3603','3919']
curs.execute(bank_accounts, clients[0])
但結果我得到一個錯誤:
java.sql.SQLException: java.sql.SQLException: Invalid column index
它有什么問題?如何將引數傳遞給.execute?
uj5u.com熱心網友回復:
在 Python 的 DB-API 規范 PEP 249 中cursor.execute,它指定了可能遵循的引數引數:jaydebeapi
引數可以作為序列或映射提供,并將系結到操作中的變數。
因此,當您嘗試從串列中的第一項切片時,不要使用標量,而是考慮在諸如元組或串列之類的序列中傳遞單個值:
# param as one-item tuple
curs.execute(bank_accounts, (clients[0],))
# params as one-item list
curs.execute(bank_accounts, [clients[0]])
或者,如果您IN為多個客戶使用了一個運算子,請直接傳遞您的串列:
bank_accounts = (
"SELECT ACCOUNT_NUM, VALID_TO, CLIENT, CREATE_DT, UPDATE_DT "
"FROM ACCOUNTS "
"WHERE client IN (?, ?, ?)"
)
clients = ['6948','3603','3919']
curs.execute(bank_accounts, clients)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/469010.html
上一篇:批量收集和游標之間的區別
