如何在Jupyter Notebook中为SQL行魔法、单元格魔法和自定义命令添加语法高亮?

17

我正在寻找在Jupyter Notebook中突出显示SQL代码的方法。 我只能突出显示SQL单元格魔术,但无法突出显示行魔术和自定义设置。

案例1(有效)

突出显示单元格魔法(以%%sql开头的单元格)

参考:在Jupyter笔记本中添加语法高亮显示单元格魔法

require(['notebook/js/codecell'], function(codecell) {
  codecell.CodeCell.options_default.highlight_modes['magic_text/x-mssql'] = {'reg':[/^%%sql/]} ;
  Jupyter.notebook.events.one('kernel_ready.Kernel', function(){
  Jupyter.notebook.get_cells().map(function(cell){
      if (cell.cell_type == 'code'){ cell.auto_highlight(); } }) ;
  });
});

第二个案例(不起作用)

行魔法: 行以 %sql 开头
我的尝试: 将正则表达式更改为^%sql,但它没有起效。

%sql select * from Products limit 5;

案例3(未能生效)

如何对自定义单元格进行语法高亮(以##%%开头的单元格)
我的尝试:尝试将正则表达式更改为^##%%sql

##%%sql
q = " select * from customer limit 2;"
execute_query(q,dbname)

示例图片

从图片中我们可以看到,单元格魔法 %sql 命令没有被突出显示。我想让它们突出显示。

在此输入图片描述

相关链接

2个回答

11

即使在赋值情况下(如第三个单元格),这也是可行的。目前不支持多种语言的高亮显示。因此,它将是Python或SQL语法,以先出现为准。

require(['notebook/js/codecell'], function (codecell) {
    codecell.CodeCell.options_default.highlight_modes['magic_text/x-mssql'] = { 'reg': [/%?%sql/] };
    Jupyter.notebook.events.one('kernel_ready.Kernel', function () {
        Jupyter.notebook.get_cells().map(function (cell) {
            if (cell.cell_type == 'code') { cell.auto_highlight(); }
        });
    });
});

在这里输入图片描述


如何使用此设置? - A.Ametov
似乎您需要在~/.jupyter/custom文件夹中创建一个名为another-custom.js的文件,就像这里所述:https://stackoverflow.com/questions/68340216/any-way-to-bring-back-sql-magic-syntax-highlighting-to-jupyterlab-notebook - A.Ametov
1
将代码片段放入 ~/.jupyter/custom/custom.js 文件中。 - igrinis

0

您可以在Colab的内置文本编辑器中打开文件,以享受正确的高亮显示。当您从左侧的“文件”选项卡中打开文本文件时,它会自动打开,并且可以使用“ctr+s”快捷键保存。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接