codemirror实现SQL代码自动提示功能

本文介绍如何利用Codemirror实现SQL代码的自动提示功能,包括引入必要的CSS和JS文件,以及配置初始化 Codemirror 和设置数据源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用codemirror使用SQL代码能够自动提示如 PLSQL等工具一般智能提示功能,

1、引入show-hint.css,codemirror.css和主题样式如:

        <link href="codemirror-5.47.0/lib/codemirror.css"/>
	<link href="codemirror-5.47.0/theme/monokai.css"/>
	<link href="codemirror-5.47.0/theme/eclipse.css"/>
	<link href="codemirror-5.47.0/theme/idea.css"/>
	<link href="codemirror-5.47.0/addon/hint/show-hint.css"/>
	<link href="codemirror-5.47.0/addon/display/fullscreen.css"/>

2、引入codemirror.js、sql.js、show-hint.js、sql-hint.js

如:

	codemirror-5.47.0/lib/codemirror.js
	codemirror-5.47.0/mode/sql/sql.js
	codemirror-5.47.0/mode/clike/clike.js
	codemirror-5.47.0/addon/display/autorefresh.js
	codemirror-5.47.0/addon/edit/matchbrackets.js
	codemirror-5.47.0/addon/selection/active-line.js
	codemirror-5.47.0/addon/display/fullscreen.js
	codemirror-5.47.0/addon/hint/show-hint.js
	codemirror-5.47.0/addon/hint/sql-hint.js

3、设置初始化codemirror,并设置table和列数据源

/**
 * codemirror集成配置工具类 Created by 许畅 on 2019-05-27.
 *
 * codemirror代码配置:
 * <pre>
 * 	CodeMirror.resolveMode("text/x-sql").keywords["left join"]=true
 *	CodeMirror.resolveMode("text/x-sql").keywords["left"]=true
 *	CodeMirror.resolveMode("text/x-sql").keywords["right join"]=true
 *	CodeMirror.resolveMode("text/x-sql").keywords["right"]=true
 *	CodeMirror.resolveMode("text/x-sql").keywords["inner join"]=true
 *  CodeMirror.resolveMode("text/x-sql").keywords["inner"]=true
 *  CodeMirror.resolveMode("text/x-sql").keywords["when"]=true
 *	CodeMirror.resolveMode("text/x-sql").keywords["FROM_DAYS(N)"]=true
 *	CodeMirror.resolveMode("text/x-sql").keywords["UPGRADE"]=true
 *	
 *	sqlCodeMirror = CodeMirror.fromTextArea(document.getElementById("sqlTest"),{
 *		  mode:  "text/x-sql",
 *		  theme :	"idea",
 *		  lineNumbers : true,
 *		  lineWrapping: true,
 *		  styleActiveLine: true,
 *		  matchBrackets: true,
 *		  autoRefresh : true,
 *	      extraKeys: {
 *	    	   "Alt-/": "autocomplete",
 *	    	   "F11": function(cm) {
 *	  	          cm.setOption("fullScreen", !cm.getOption("fullScreen"));
 *	  	       },
 *	  	       "Esc": function(cm) {
 *	  	          if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false);
 *	  	       }  
 *	      }, // To invoke the auto complete
 *		  hint: CodeMirror.hint.sql,
 *		  hintOptions: {
 *            tables: {
 *                "t_test_login": [ "col_a", "col_B", "col_C" ],
 *               "t_test_employee": [ "other_columns1", "other_columns2" ]
 *            }
 *         }
 *	 });
 *	sqlCodeMirror.setValue("select * from t_test_login where 1=1");
 *	
 *	sqlCodeMirror.on("change", function(editor, change) {
 *        if (change.origin == "+input"){
 *            var textArray = change.text;
 *            //不提示
 *            if(!ignoreInputCode(textArray)){
 *            	setTimeout(function() { editor.execCommand("autocomplete"); }, 100);
 *            }
 *        }
 *    });
 *  </pre>
 */

更新详细配置可参考其官方说明,可参照其demo说明。

### 使用 AutoGPTQ 库量化 Transformer 模型 为了使用 `AutoGPTQ` 对 Transformer 模型进行量化,可以遵循如下方法: 安装所需的依赖包是必要的操作。通过 pip 安装 `auto-gptq` 可以获取最新版本的库。 ```bash pip install auto-gptq ``` 加载预训练模型并应用 GPTQ (General-Purpose Tensor Quantization) 技术来减少模型大小和加速推理过程是一个常见的流程。下面展示了如何利用 `AutoGPTQForCausalLM` 类来进行这一工作[^1]。 ```python from transformers import AutoModelForCausalLM, AutoTokenizer from auto_gptq import AutoGPTQForCausalLM model_name_or_path = "facebook/opt-350m" quantized_model_dir = "./quantized_model" tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) model = AutoModelForCausalLM.from_pretrained(model_name_or_path) # 加载已经量化的模型或者创建一个新的量化器对象用于量化未压缩过的模型 gptq_model = AutoGPTQForCausalLM.from_pretrained(quantized_model_dir, model=model, tokenizer=tokenizer) ``` 对于那些希望进一步优化其部署环境中的模型性能的人来说,`AutoGPTQ` 提供了多种配置选项来自定义量化参数,比如位宽(bit-width),这有助于平衡精度损失与运行效率之间的关系。 #### 注意事项 当处理特定硬件平台上的部署时,建议查阅官方文档以获得最佳实践指导和支持信息。此外,在实际应用场景之前应该充分测试经过量化的模型以确保满足预期的质量标准。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值