PyCharm 中写 Python 裸 SQL 时,无法识别 f-string 变量怎么办?
有没有用的熟练的大佬知道在哪里可以设置,亦或是这就是个 Bug ?
如图,说不影响是假的,专门起的给 sql 用的变量,看起来都是灰色未使用,总是忍不住想要删掉。。。


PyCharm 中写 Python 裸 SQL 时,无法识别 f-string 变量怎么办?
看看这个情况肯定就是两种语法冲突啦,你要 Pycharm 按哪种语法进行高亮?按目前来看,你这个语言不属于 SQL,因此高亮不起来。如果按 f-string 高亮,select 这些 SQL 的关键字也就不可能高亮。
这东西要能做,完全就是 hack,去 youtrack 提 issue 吧
在PyCharm里写f-string的SQL语句,变量没高亮是吧?这是PyCharm的SQL方言解析器没识别Python的f-string语法。
解决方案:
-
临时方案:用
-- noinspection注释忽略这个警告# noinspection SqlDialectInspection query = f"SELECT * FROM users WHERE id = {user_id}" -
推荐方案:改用参数化查询(更安全且PyCharm能正确解析)
# 使用 ? 占位符(SQLite示例) query = "SELECT * FROM users WHERE id = ?" cursor.execute(query, (user_id,)) # 或使用命名占位符(PostgreSQL示例) query = "SELECT * FROM users WHERE id = %(user_id)s" cursor.execute(query, {'user_id': user_id}) -
配置方案:在PyCharm设置里调整SQL检测
Settings → Editor → Inspections → SQL- 关闭
"Unresolved reference"或调整SQL方言
总结: 要么忽略警告,要么改用参数化查询更规范。
你这个逗号有问题吧,写代码用英文输入法,不要用中文输入法的英文
应该是如 1 楼所说的两种语法冲突了。
你的可以是因为你没使用 sql 语法,看下我的 sql 截图:

确实是这个问题!我尝试在 select 后面加个 1,使之不被认为是个 sql 后,就正常了
权衡利弊之后,选择了关闭 sql 的语法提示,不然右侧提示全是红杠。
关闭位置位于 File–Settings–Editor–Language Injections–取消勾选 “SQL select/delete/insert/updatge/create”
写个 idea 插件就能支持了

