You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jupyter Notebook的三引号字符串中实现SQL语法高亮?

在Jupyter Notebook中实现PySpark SQL字符串的语法高亮

以下是几种不改变字符串属性的前提下,让三引号SQL字符串获得SQL语法高亮的实用方法:

方法1:利用编辑器注释识别技巧

在三引号字符串开头添加SQL注释标记,让Jupyter的语法高亮引擎自动识别为SQL代码:

print('Hello world')
sql = """-- sql
      SELECT myid, myname, CAST(mydate AS DATE)
      FROM myschema.mytable
      WHERE something
      """
execute_sql(sql)

多数Jupyter的语法高亮插件会识别-- sql标记,将整个三引号字符串按SQL规则着色,同时它依然是标准Python字符串,完全不影响后续传给execute_sql调用。

方法2:借助IPython SQL扩展绑定变量

先加载ipython-sql扩展,通过魔法命令编写高亮的SQL并绑定到变量,既保留编写时的SQL高亮,又能得到可直接使用的字符串:

%load_ext sql
%sql --save my_query -q
SELECT myid, myname, CAST(mydate AS DATE)
FROM myschema.mytable
WHERE something

# 提取SQL字符串到变量
from sqlalchemy import text
sql = str(text(my_query))
execute_sql(sql)

编写SQL时是纯SQL语法高亮,最终得到的sql变量依然是普通字符串,可直接用于你的ETL函数调用。

方法3:自定义字符串类实现输出高亮

如果需要在Jupyter中查看变量时也能看到高亮的SQL,可以定义一个继承自str的类,利用Pygments实现渲染高亮:

from pygments import highlight
from pygments.lexers import SqlLexer
from pygments.formatters import HtmlFormatter
from IPython.display import HTML

class SQLString(str):
    def _repr_html_(self):
        return highlight(self, SqlLexer(), HtmlFormatter(style='default'))

# 使用自定义类创建SQL字符串
print('Hello world')
sql = SQLString("""
      SELECT myid, myname, CAST(mydate AS DATE)
      FROM myschema.mytable
      WHERE something
      """)
execute_sql(sql)  # 依然可正常作为字符串传入函数

这种方法在Jupyter中显示sql变量时会呈现高亮的SQL样式,同时它本质还是字符串,不影响任何原有逻辑。

内容的提问来源于stack exchange,提问作者Jacob Bayer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 07:20:48