Я создаю оператор SQL как строковый литерал и передаю его в метод выполнения SQLAlchemy.Чтобы избежать SQL-инъекции, я использовал заполнитель, но он не работает хорошо.Когда я использовал специальные слова, такие как «!», Это стало ошибкой.ps Я использую flask-sqlalchemy
Это код.
sql = ""
sql += "SELECT count(*) "
sql += "FROM mytable, to_tsquery('english',%(kstr)s) query "
sql += "WHERE query @@ tsv "
res = db.engine.execute(sql, kstr = keyquery)
keyquery - это поисковые слова, и если keyquery включает специальные слова, такие как '!, &', это становится ошибкой ....
Это сообщение об ошибке, оно содержит японский язык из-за моей машинной среды.
ProgrammingError: (ProgrammingError) tsquery内の構文エラー: "USA!"
"SELECT count(*) FROM mytable, to_tsquery('english',%(kstr)s) query WHERE query @@ tsv " {'kstr': u'USA!'}
Теперь я пропускаю слова NG как это.
keyquery = .replace("!'","").replace('$','')......
Но, таким образом, я не могу искать слова, которые включают в себя специальные слова, такие как «США!»Как я могу решить проблему?