如何在Jupyter Notebook中为SQL行魔术,单元魔术和自定义命令添加语法突出显示?

Mil*_*001 11 javascript python sql pandas jupyter-notebook

我正在寻找在jupyter笔记本中突出显示SQL代码的方法。我只能突出显示SQL单元魔术,而不能突出显示行魔术和自定义设置。

案例1(有效)

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

参考:向Jupyter Notebook Cell Magic添加语法突出显示

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(); } }) ;
  });
});
Run Code Online (Sandbox Code Playgroud)

情况2(无效)

换行符:行以%sql开头
我的尝试:将正则表达式更改为,^%sql 但不起作用。

%sql select * from Products limit 5;
Run Code Online (Sandbox Code Playgroud)

情况3(无效)

如何语法突出显示自定义单元格(单元格以## %%开头)
我的尝试:尝试将正则表达式更改为^##%%sql

##%%sql
q = " select * from customer limit 2;"
execute_query(q,dbname)
Run Code Online (Sandbox Code Playgroud)

范例图片

在该图中,我们可以看到单元魔术%sql命令未突出显示。我希望它们突出显示。 在此处输入图片说明

相关链接

igr*_*nis 5

像第三个单元格一样,这甚至适用于分配。当前无法使用多种语言突出显示。因此,无论采用哪种语法,都将是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(); }
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明