Как заставить PyCharm распознавать заполнители в операциях SQL?
Я использую PyCharm, и у меня есть ошибка в этом операторе SQL:
SELECT * FROM table WHERE id= %(id)s
Проверка синтаксиса кода говорит:
<expression> expected, got '%'
Есть ли способ отключить это сообщение об ошибке? Другими словами, как заставить PyCharm распознавать заполнители в операторах SQL?
Edit
Вот мое решение:
Для %(id)s
и %s
вы должны иметь %\((\w+)\)s
и %s
в Settings/Preferences | Tools | Database | User parameters
и выбрать All languages
не только SQL
Ответы
Ответ 1
Является ли этот SQL в консоли SQL или в строке в Python script? У меня была такая же проблема, и я решил ее, установив флажок над списком шаблонов с надписью "Включить в строковых литералах с помощью SQL-инъекции". Если вы делаете это в окне консоли SQL, отметьте первое поле.
Как отмечает @LazyOne, перейдите к Settings/Preferences > Tools > Database > User Parameters
, и вы увидите два флажка вверху:
Enable in console and SQL files
Enable in string literals with SQL injection
Пока вы можете добавить свои собственные шаблоны, я считаю, что шаблон, который соответствует синтаксису этого параметра (для меня, параметры для psycopg2 для использования в Postgres), является готовым в Pycharm, последним в списке.
См. здесь для справки:
https://www.jetbrains.com/help/pycharm/2016.1/user-parameters.html
Ответ 2
В дополнение к ответу @Nate (встроенное regex %\((\w+)\)s
работает для PostgreSQL), мне удалось получить эту работу только путем переупорядочения шаблонов и перемещения целевого регулярного выражения в начало списка.
Можно также попытаться отключить другие правила и посмотреть, помогает ли это.