Tôi đang sử dụng SQL thủ công để tìm nạp dữ liệu từ cơ sở dữ liệu PG, sử dụng SqlAlchemy. Tôi đang thử một truy vấn có chứa toán tử như SQL '%' và điều đó dường như ném SqlAlcjhemy qua một vòng lặp:
sql = """
SELECT DISTINCT u.name from user u
INNER JOIN city c ON u.city_id = c.id
WHERE c.designation=upper('fantasy')
AND c.id IN (select id from ref_geog where short_name LIKE '%opt')
"""
# The last line in the above statement throws the error mentioned in the title.
# However if the last line is change to:
# AND c.id IN (select id from ref_geog where short_name = 'helloopt')
# the script runs correctly.
#
# I also tried double escaping the '%' i.e. using '%%' instead - that generated the same error as previously.
connectDb()
res = executeSql(sql)
print res
closeDbConnection()
Có ai biết điều gì gây ra thông báo lỗi sai này không và làm cách nào để khắc phục?
[[Biên tập]]
Trước khi có ai hỏi, không có gì đặc biệt hay lạ mắt về các chức năng bao gồm ở trên. Ví dụ, hàm execSql () chỉ đơn giản gọi hàm Conn.execute (sql) và trả về kết quả. Kết nối biến chỉ đơn giản là kết nối được thiết lập trước đó đến cơ sở dữ liệu.
executeSql(...)
? Và ngoài ra, bạn có thực sự cóRETURNING *
trongSELECT
tuyên bố?