SQLAlchemy заполнитель не работает хорошо

1

Я строю инструкцию SQL как строковый литерал и передаю его методу выполнения SQLAlchemy. Чтобы избежать инъекции SQL, я использовал держатель места, но он не работает хорошо. Когда я использовал специальные слова типа "!" И ", это стало ошибкой. ps Я использую колбу-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 - это слова поиска, и если ключевое слово включает специальные слова, такие как "!" и "это становится ошибкой...

Это сообщение об ошибке, оно содержит японский язык из-за моей машинной среды.

ProgrammingError: (ProgrammingError) tsquery内の構文エラー: "USA!"
"SELECT count(*) FROM mytable, to_tsquery('english',%(kstr)s) query WHERE query @@ tsv " {'kstr': u'USA!'}

Теперь, я скепинг NG слова как это.

keyquery = .replace("!'","").replace('$','')......

Но, таким образом, я не могу искать слова, содержащие специальные слова, такие как "США!". Как я могу решить проблему?

  • 0
    Если вы просто собираетесь использовать простой SQL, почему бы просто не использовать API БД напрямую? Просто пропустите sqlalchemy.
Теги:
sqlalchemy

1 ответ

1

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню