首页 > 解决方案 > 如何在 jupyter notebook 中为 SQL 行魔术、单元魔术和自定义命令添加语法高亮?

问题描述

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

案例一(作品)

高亮单元格魔法(单元格以 %%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(); } }) ;
  });
});

案例2(不起作用)

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

%sql select * from Products limit 5;

案例3(不起作用)

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

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

示例图片

在图像中,我们可以看到单元格魔术 %sql 命令未突出显示。我希望它们被突出显示。 在此处输入图像描述

相关链接

标签: javascriptpythonsqlpandasjupyter-notebook

解决方案


这甚至适用于分配,如在第三个单元格中。目前多语言高亮不可用。所以它要么是 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(); }
        });
    });
});

在此处输入图像描述


推荐阅读