Saya menggunakan SQL buatan tangan untuk mengambil data dari database PG, menggunakan SqlAlchemy. Saya mencoba kueri yang berisi operator seperti SQL '%' dan yang tampaknya melempar SqlAlcjhemy melalui loop:
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()
Adakah yang tahu apa yang menyebabkan pesan kesalahan yang menyesatkan ini dan bagaimana saya dapat memperbaikinya?
[[Sunting]]
Sebelum ada yang bertanya, tidak ada yang istimewa atau mewah tentang fungsi yang disertakan di atas. Sebagai contoh, fungsi executeSql () cukup memanggil conn.execute (sql) dan mengembalikan hasilnya. Sambungan variabel hanyalah koneksi yang sebelumnya dibuat ke database.
executeSql(...)
? Dan juga, apakah Anda benar-benar adaRETURNING *
dalamSELECT
pernyataan itu?