ฉันใช้ SQL ที่สร้างขึ้นด้วยมือเพื่อดึงข้อมูลจากฐานข้อมูล PG โดยใช้ SqlAlchemy ฉันพยายามค้นหาที่มี SQL เช่นผู้ประกอบการ '%' และที่ดูเหมือนว่าจะโยน SqlAlcjhemy ผ่านวง:
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()
มีใครรู้ว่าอะไรทำให้เกิดข้อผิดพลาดที่ทำให้เข้าใจผิดและฉันจะแก้ไขได้อย่างไร
[[แก้ไข]]
ก่อนที่จะมีใครถามไม่มีอะไรพิเศษหรือแฟนซีเกี่ยวกับฟังก์ชั่นด้านบน ตัวอย่างเช่นฟังก์ชั่น executeSql () เพียงแค่เรียก conn.execute (sql) และส่งกลับผลลัพธ์ ตัวแปร conn เป็นเพียงการเชื่อมต่อที่สร้างไว้ก่อนหน้านี้กับฐานข้อมูล
executeSql(...)
หรือไม่ และคุณมีจริง ๆRETURNING *
ในSELECT
คำสั่งหรือไม่