我正在嘗試在 python 中使用 prestodb 并將數字串列作為查詢中的引數傳遞,但出現此錯誤
PrestoUserError: PrestoUserError(type=USER_ERROR, name=TYPE_MISMATCH, message="line 208:33: IN value and list items must be the same type: bigint", query_id=20211122_175131_24052_rruhu)
代碼與此類似
import prestodb
from prestodb import dbapi
import os
conn=prestodb.dbapi.connect(
host=os.environ['aa'],
port=os.environ['bb'],
user=os.environ['cc'],
password=os.environ['dd'],
catalog='hive'
)
date_start = '2021-10-10'
date_end = '2021-10-15'
list_id = (1,2,3,4)
sql = '''
SELECT
*
FROM
table
WHERE
DATE BETWEEN '{date_start}'
AND '{date_end}'
AND ID in ({list_id})
'''.format(date_start=date_start,date_end=date_end,list_id=list_id)
cur = conn.cursor()
cur.execute(sql)
query_result = cur.fetchall()
謝謝 :)
uj5u.com熱心網友回復:
format不會list_id正確加入。嘗試將 id 組合成逗號分隔的字串','.join(map(str, list_id)):
sql = '''
SELECT
*
FROM
table
WHERE
DATE BETWEEN '{date_start}'
AND '{date_end}'
AND ID in ({list_id})
'''.format(date_start=date_start,date_end=date_end,list_id=', '.join(list_id))
uj5u.com熱心網友回復:
其作品!謝謝!
只是為了注冊,我做到了
sql = '''
SELECT
*
FROM
table
WHERE
DATE BETWEEN '{date_start}'
AND '{date_end}'
AND ID in ({list_id})
'''.format(date_start=date_start,date_end=date_end,list_id=', '.join(map(str, list_id)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/363094.html
上一篇:在python中為什么串列使用“ ”而字典使用“|”達到同樣的目的?
下一篇:Django顯示來自模型的視頻
