我正在嘗試在STAT表的detection欄位中搜索字串,如下所示:
query = "select detection_class, stream_id, track_id, detection_time, " \
"frame_id" \
" FROM stats where stream_id = %s "\
"detection_class like %%s%% group by track_id; "
with connection.cursor() as cursor:
cursor.execute(query,[stream_id, detection_class])
在這里,當我給出檢測類中包含的單詞或某些字符時,它會回傳這樣的錯誤訊息TypeError('not all arguments converted during string formatting')),。而且,如果我嘗試detection_class=%s讓它在給出時正常作業,而其他單詞則回傳無。
uj5u.com熱心網友回復:
執行查詢時不要使用字串格式。而是使用占位符或命名引數。
query = """
SELECT detection_class,
stream_id,
track_id,
detection_time,
frame_id
FROM stats
WHERE stream_id = :stream_id
AND detection_class LIKE :dclass
GROUP BY track_id;
"""
with connection.cursor() as cursor:
params = {"stream_id": stream_id, "dclass": f"%{detection_class}%"}
cursor.execute(query, params)
我相信也可以使用占位符方法來做到這一點,如下所示。
query = """
SELECT detection_class,
stream_id,
track_id,
detection_time,
frame_id
FROM stats
WHERE stream_id = ?
AND detection_class LIKE %?%
GROUP BY track_id;
"""
with connection.cursor() as cursor:
cursor.execute(query, (stream_id, detection_class,))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/485337.html
