SQLAlchemy заполнитель не работает хорошо - PullRequest
1 голос
/ 13 марта 2012

Я создаю оператор 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('$','')......

Но, таким образом, я не могу искать слова, которые включают в себя специальные слова, такие как «США!»Как я могу решить проблему?

1 Ответ

1 голос
/ 18 марта 2012

Попробуйте plainto_tsquery() вместо to_tsquery(). Соответствующая документация по полнотекстовому поиску PostgreSQL .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...