20

我正在使用 PyCharm,但此 SQL 语句出现错误:

SELECT * FROM table WHERE id= %(id)s

代码语法检查说:

<expression> expected, got '%'

有没有办法禁用此错误消息?换句话说,如何让 PyC​​harm 识别 SQL 语句中的占位符?

编辑

这是我的解决方案:

For %(id)sand %syou have to have %\((\w+)\)sand %sin Settings/Preferences | Tools | Database | User parametersand selectAll languages不仅是 SQL

4

2 回答 2

23

此 SQL 是在 SQL 控制台中,还是在 Python 脚本中的字符串中?我遇到了同样的问题,并通过选中模式列表上方的框来解决它,标记为“使用 SQL 注入启用字符串文字”。如果您在 SQL 控制台窗口中执行此操作,请选中第一个框。

正如@LazyOne 所说,转到Settings/Preferences > Tools > Database > User Parameters,您会在顶部看到两个复选框:
Enable in console and SQL files
Enable in string literals with SQL injection

虽然您可以添加自己的自定义模式,但我相信与此参数语法匹配的模式(对我来说,是用于 Postgres 的 psycopg2 的参数)在 Pycharm 中是开箱即用的,是列表中的最后一个。

请参阅此处以供参考:
https ://www.jetbrains.com/help/pycharm/2016.1/user-parameters.html

于 2016-04-01T01:44:57.350 回答
0

除了@Nate 的回答(内置正则表达式%\((\w+)\)s适用于 PostgreSQL)之外,我只能通过重新排序模式并将目标正则表达式移动到列表顶部来设法完成这项工作。

也可以尝试禁用其他规则,看看是否有帮助。

于 2016-08-26T15:16:37.490 回答