# Smartchart开发手册

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/ Recent content on Smartchart开发手册 Hugo -- gohugo.io

#

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/API%E6%95%B0%E6%8D%AE%E9%9B%86/ Mon, 01 Jan 0001 00:00:00 +0000 https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/API%E6%95%B0%E6%8D%AE%E9%9B%86/ 对接外部API取数, 注意返回一定要是JSON格式 你只需要在数据集编辑框中如下输入 //GET 方法: dataset= { &#34;url&#34;:&#34;https://www.smartchart.cn/smartdata/api/?i=loaddataset1&amp;j=1&#34; } //POST 方法: dataset= { &#34;url&#34;:&#34;https://www.smartchart.cn/smartdata/api&#34;, &#34;method&#34;:&#34;POST&#34;, &#34;data&#34;:{&#34;i&#34;:&#34;loaddataset1&#34;, &#34;j&#34;:&#34;1&#34;} ... } 例如你可以传入参数做出联动效果 dataset= { &#34;url&#34;:&#34;https://www.smartchart.cn/smartdata/api&#34;, &#34;method&#34;:&#34;POST&#34;, &#34;data&#34;:{&#34;i&#34;:&#34;loaddataset1&#34;, &#34;j&#34;:&#34;/*$参数名*/&#34;} ... } 你也可以增加header等认证方式 dataset= { &#34;url&#34;:&#34;https://www.smartchart.cn/smartdata/api&#34;, &#34;method&#34;:&#34;GET&#34;, &#34;headers&#34;:{&#34;Cookie&#34;:&#34;xxxxxxx&#34;} ... }

#

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/%E4%BD%BF%E7%94%A8EXCEL%E6%95%B0%E6%8D%AE/ Mon, 01 Jan 0001 00:00:00 +0000

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/%E4%BD%BF%E7%94%A8EXCEL%E6%95%B0%E6%8D%AE/
使用固定数据集 # 有一些场景, 比如已有一些固定的筛选器,或是需要测试用,或者Demo,或者其它图形需要用到一些共用的已确定好的数据 这样我们可以不需要通过查询数据库的方式, 而直接写入数据集, 支持数组和字典的格式 你只需要在数据集中起始写入 dataset= , 这样就是默认是固定数据 如何快速的输入固定数据集, 你可以通过直接从EXCEL复制到数据集编辑器(以下图片非目前编辑器, 供参考),保存以后会自动生成: 固定数据集也支持之前提到传参数, 魔术方法, 缓存等所有数据集的功能 上传文件的方式使用 # 用户如何上传文件 # smartchart默认是不自带文件上传功能 但是smartchart是可以自已创造上传页面, 在模板商店中你可以找到相关模板进行购买 然后通过模板下载的方式下载后进行操作 这样每一个页面是可以单独使用权限控制的,就和控制报表权限一样,你还可能按需随意定制页面 关于上传文件的路径 # 默认的上传主目录是在项目的log的文件夹下面, 你可以在setting.py(自定义django) 或 config.ini中设定UPLOAD_PATH来修改你的上传目录 比如你上传页面的报表ID是23, 那么文件将会被上传到UPLOAD_PATH/23/你的文件名 如何使用上传的文件 # 你需要使用 python连接器, 来操作你的上传的数据, 内置了变量ds_path为你的上传目录, 所以可以更方便的读取上传的文件,如上文件 df = pd.read_excel(ds_path+&rsquo;/23/文件名')

#

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/Python%E6%95%B0%E6%8D%AE%E9%9B%86/ Mon, 01 Jan 0001 00:00:00 +0000

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/Python%E6%95%B0%E6%8D%AE%E9%9B%86/
应用场景 # 当SQL查询无法满足你的需求, 你需要对查询后的结果进行处理, 或者你需要使用Excel的数据源, 甚至你需要对不同系统的数据进行查询, Python连接器可以帮到你 我们又称他为万能数据集， 你可以使用任何python语法， 需要把数据集的结果赋值给ds变量!! 首先你需要新建python连接器, 由于安全控制只允许超级管理员建立 # 内置函数说明 ds_get(id) #输入目标数据集的id名, 可以获取目标数据集 ds_df(id) #输入目标数据集的id名, 转化成pandas的df对象 ds_sql(conn_name, sql_str) #输入连接池中的名称, SQL语句, 获取数据集 ds_list(df) #将pandas的df对象转化成数据集 使用方法样列说明 # 读取Excel数据处理, 如需上传页面可参考&quot;数据上传&quot;说明 import pandas as pd df = pd.read_excel(&#39;文件路径&#39;, &#39;表名&#39;) df = df.groupby(&#39;c3&#39;).agg({&#39;qty&#39;:&#39;sum&#39;}).reset_index() ds = ds_list(df) 从数据集获取数据后进行处理 ds=ds_get(12) ds=ds[:15] 从数据集获取数据转化成pandas对象处理 df = ds_df(12) df = df.sort_values(by=&#34;出场数&#34;, ascending=False) ds = ds_list(df) 生成字典格式的数据集供多个图形使用 import pandas as pd df = pd.read_excel(&#39;/Users/../smartdemo.xlsx&#39;, &#39;demo&#39;) df0 = df.

#

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E6%BA%90/ Mon, 01 Jan 0001 00:00:00 +0000

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E6%BA%90/
smartchart已实现大部分常用的数据源连接, 对于其它的, 您也可以使用python数据源进行处理 但是使用python数据源有一定的缺陷, 需要在dataset上写python代码, 不能复用 对于一些带连接信息的还需要重复写入 所以你还可以使用自定义数据源 应用场景 # 未内置的数据源, 如需要使用sparkSQL, ES等 标准处理满足不了要求, 需要对数据进行预处理的情况 需要刷新时触发预警等自定义动作 需要自定义写入方法, 个性化查询需求, 甚至是实时爬取数据 使用方法 # 首先你需要新建一个python脚本文件, 如diy_conn.py 复制以下代码到这个文件, 然后编写你的自定义查询方法 def dataset(*args, **kwargs): &#34;&#34;&#34; 返回查询数据集 :return: 二维数组或JSON字典 &#34;&#34;&#34; sqlList = args[0] # 数据集编辑界面的输入已按分号拆分成数组 [sql1, sql2...] config = args[1] # 相关的配置字典{&#39;host&#39;,&#39;port&#39;,&#39;user&#39;,&#39;password&#39;,&#39;db&#39;} # 插入你的数据查询及处理代码, 生成result即可 result = [[]] return result def insert_dataset(*args, **kwargs): &#34;&#34;&#34; 数据填表实现 &#34;&#34;&#34; contents = args[0] # 传入的数据集二维数组格式 table = args[1] # 配置中的表名 config = args[3] # 相关的配置字典{&#39;host&#39;,&#39;port&#39;,&#39;user&#39;,&#39;password&#39;,&#39;db&#39;} # 插入你的写入数据逻辑代码 在任意的仪表盘开发界面中 &ldquo;模板&rdquo; &ndash;&gt; 点击上传图标, 将这个python文件上传即可 新建数据源, 驱动填写之前上传过的文件名, 比如我们这个是diy_conn, 其它参数按照你自定义的需求填写, 会自动传入你的自定义函数,之后你可以正常使用这个自定义数据源了 如果你对python不熟悉, 也可咨询客服按需定制, 你只需上传即可使用

#

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/webSocket%E6%96%B9%E5%BC%8F/ Mon, 01 Jan 0001 00:00:00 +0000

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/webSocket%E6%96%B9%E5%BC%8F/
应用场景 # 对于实时程度要求比较高的情况下, 如果你后端已有实现websocket的接口, smartchart也可以很方便的接入 参考以下步骤即可 在&quot;模板&quot;中定义一个全局变量, 如ws_data 编写连接和接收代码段逻辑 在接收代码段加入ds_refresh, 如要刷新0号图形, 则加入ds_refresh(0) 在&quot;高级&quot;设定中加入共享数据集设定, 把ws_data映射到0号图形即可 代码段参考 # let ws_data = [[&#39;初始化&#39;,&#39;V&#39;],[&#39;A&#39;,&#39;2&#39;]]; let ws = null; if(&#39;webSocket&#39; in window){ print(&#39;支持webSocket&#39;); ws = new webSocket(&#39;ws://127.0.0.1:2222/abc&#39;); //连接成功 ws.onopen = function(){ print(&#39;ws连接成功&#39;); } //接收消息 ws.onmessage = function(evt){ ws_data = evt.data; ds_refresh(0); } } else{ print(&#39;浏览器不支持ws&#39;) }

#

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/Elasticsearch%E6%95%B0%E6%8D%AE%E6%BA%90/ Mon, 01 Jan 0001 00:00:00 +0000

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/Elasticsearch%E6%95%B0%E6%8D%AE%E6%BA%90/
数据源配置方法 # 查询方法 # 更多查询方法参考 # 模糊查询 body = { &#39;query&#39;: { # 查询命令 &#39;match&#39;: { # 查询方法：模糊查询（会被分词）。比如此代码，会查到只包含：“我爱你”， “中国”的内容 &#39;name&#39;: &#39;刘&#39; } }, &#39;size&#39;: 20 # 不指定默认是10，最大值不超过10000（可以修改，但是同时会增加数据库压力） } term，精准单值查询 # 注：此方法只能查询一个字段，且只能指定一个值。类似于mysql中的where ziduan=&#39;a&#39; body ={ &#39;query&#39;:{ &#39;term&#39;:{ &#39;ziduan1.keyword&#39;: &#39;刘婵&#39; # 查询内容等于“我爱你中国的”的数据。查询中文，在字段后面需要加上.keyword # &#39;ziduan2&#39;: &#39;liuchan&#39; } } } erms，精准多值查询 #此方法只能查询一个字段，但可以同时指定多个值。类似于mysql中的where ziduan in (a, b,c...) body ={ &#34;query&#34;:{ &#34;terms&#34;:{ &#34;ziduan1.keyword&#34;: [&#34;刘婵&#34;, &#34;赵云&#34;] # 查询ziduan1=&#34;刘婵&#34;或=赵云...的数据 } } } multi_match，多字段查询 # 查询多个字段中都包含指定内容的数据 body = { &#34;query&#34;:{ &#34;multi_match&#34;:{ &#34;query&#34;:&#34;我爱你中国&#34;, # 指定查询内容，注意：会被分词 &#34;fields&#34;:[&#34;ziduan1&#34;, &#34;ziduan2&#34;] # 指定字段 } } } prefix，前缀查询 body = { &#39;query&#39;: { &#39;prefix&#39;: { &#39;ziduan.

#

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/JDBC%E6%95%B0%E6%8D%AE%E6%BA%90/ Mon, 01 Jan 0001 00:00:00 +0000

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/JDBC%E6%95%B0%E6%8D%AE%E6%BA%90/
应用场景 # 当无法在python中找到连接库时, 你还可以采用jdbc的连接方式 使用方法 # 首先您需要安装jdbc的包 pip install JayDeBeApi 在任意的一个仪表盘的 &ldquo;模板&rdquo; 编辑器中, 点击上传资源的图标上传相应的jdbc JAR包即可 新建连接的方式, 以下使用impala为例

#

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/kafka%E6%95%B0%E6%8D%AE%E6%BA%90/ Mon, 01 Jan 0001 00:00:00 +0000

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/kafka%E6%95%B0%E6%8D%AE%E6%BA%90/
用于获取kafka指定分区的最后一条记录, 用于实时场景 使用方法参考&quot;自定义数据源&quot; 以下为参考代码: def dataset(*args, **kwargs): &#34;&#34;&#34; 返回查询数据集 :return: 二维数组或JSON字典 &#34;&#34;&#34; from kafka import KafkaConsumer, TopicPartition import json sqlList = args[0] # 数据集编辑界面的输入已按分号拆分成数组 [sql1, sql2...] config = args[1] # 相关的配置字典{&#39;host&#39;,&#39;port&#39;,&#39;user&#39;,&#39;password&#39;,&#39;db&#39;} # 插入你的数据查询及处理代码, 生成result即可 result = {} consumer = KafkaConsumer(sasl_mechanism=&#39;PLAIN&#39;, security_protocol=&#39;SASL_PLAINTEXT&#39;, sasl_plain_username=config[&#39;user&#39;], sasl_plain_password=config[&#39;password&#39;], bootstrap_servers=config[&#39;host&#39;], auto_offset_reset=&#39;earliest&#39;, api_version=(1, 0, 0), consumer_timeout_ms=50, value_deserializer=lambda v: json.loads(v.decode(&#39;utf-8&#39;)), ) topic = sqlList[0] partition = int(config[&#39;db&#39;]) tp = TopicPartition(topic=topic, partition=partition) consumer.assign([tp]) end_offsets = consumer.end_offsets([tp]).get(tp) # 获取当前消费者最大偏移量 consumer.seek(tp, offset=end_offsets-1) for message in consumer: result = message.

#

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/mongodb%E6%95%B0%E6%8D%AE%E6%BA%90/ Mon, 01 Jan 0001 00:00:00 +0000

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/mongodb%E6%95%B0%E6%8D%AE%E6%BA%90/
使用方法 # 连接池正常配置即可 数据集开发中，填写查询需求： {&#34;db&#34;: &#34;db1&#34;, &#34;table&#34;: &#34;tb1&#34;, &#34;filter&#34;: {&#34;name&#34;: &#34;Zarten&#34;}, &#34;projection&#34;: {&#34;_id&#34;: 0}, &#34;sort&#34;: [[&#34;_id&#34;, 1]], &#34;limit&#34;: 10} 由于返回的字典格式， 如需转化成二维数组， 可使图形中的转化函数ds_mapToList let dataset=ds_mapToList(__dataset__); 参数说明： # 除table，其它都为可选参数 参数 说明 样列 db 数库名,默认连接设定中db名 table 表名[必填] filter 筛选项,具体用法参考下文 {&ldquo;name&rdquo;: &ldquo;Zarten&rdquo;,&ldquo;date&rdquo;:&ldquo;2020-10-01&rdquo;} projection 显示列 {&ldquo;name&rdquo;: 1,&ldquo;date&rdquo;:1} sort 排序，-1为降序 [[&ldquo;date&rdquo;, -1]] limit 限定返回数量 filter条件说明 # 且条件 {&#34;age&#34;:{&#34;$gt&#34;:22}, &#34;name&#34;:{&#34;$regex&#34;:&#34;user&#34;}} 或条件 { &#34;$or&#34;: [ {&#34;age&#34;: {&#34;$gt&#34;: 22}}, {&#34;name&#34;: {&#34;$regex&#34;: &#34;user&#34;}} ] } 比较查询 $lt和&lt;，$lte和&lt;=，$gt和&gt;，gte和&gt;=，ne和!=是一一对应的 {&#34;field_name&#34;: {&#34;$lt&#34;: value, &#34;$gt&#34;: value}} 关联查询$in和$nin

#

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/promitheus%E6%95%B0%E6%8D%AE%E6%BA%90/ Mon, 01 Jan 0001 00:00:00 +0000

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/promitheus%E6%95%B0%E6%8D%AE%E6%BA%90/
数据源配置方法 # 驱动: prometheus 连接地址: http://ip:9090 查询方法 # 输入常规查询命令即可 返回值为prometheus标准json, 你需要在图形编辑器中使用js处理数据 let dataset=__dataset__; //获取返回值列表中的第一值 dataset = dataset.data.result[0].value; print(dataset) 处理数据样列 # 如获得的数据 { &#34;status&#34;:&#34;success&#34;, &#34;data&#34;:{ &#34;resultType&#34;:&#34;vector&#34;, &#34;result&#34;:[ {&#34;metric&#34;:{&#34;__name__&#34;:&#34;starrocks_fe_routine_load_jobs&#34;,&#34;group&#34;:&#34;fe&#34;,&#34;instance&#34;:&#34;xxx:8030&#34;,&#34;job&#34;:&#34;StarRocks_Cluster01&#34;,&#34;state&#34;:&#34;CANCELLED&#34;}, &#34;value&#34;:[1671188429.573,&#34;0&#34;] }, {&#34;metric&#34;:{&#34;__name__&#34;:&#34;starrocks_fe_routine_load_jobs&#34;,&#34;group&#34;:&#34;fe&#34;,&#34;instance&#34;:&#34;xxx:8030&#34;,&#34;job&#34;:&#34;StarRocks_Cluster01&#34;,&#34;state&#34;:&#34;NEED_SCHEDULE&#34;}, &#34;value&#34;:[1671188429.573,&#34;2&#34;]} ... ] } } 图形中处理成smartchart标准格式 //处理prometheus let df = __dataset__; let result = df.data.result; let dataset = [[&#39;instance&#39;,&#39;state&#39;,&#39;qty&#39;]]; //二维表头 for(let item of result){ let pmetric = item.metric; let pvalue = item.value; dataset.push([pmetric.instance,pmetric.state,pvalue[1]]); } dataset = ds_pivot(dataset); //列转行 如果带时序的, 数据处理参考

#

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/Redis%E6%95%B0%E6%8D%AE%E6%BA%90/ Mon, 01 Jan 0001 00:00:00 +0000

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/Redis%E6%95%B0%E6%8D%AE%E6%BA%90/
应用场景 # 你可能会有这样的一些需求, 展示数据是要通过外部的程序计算好,如一些实时的计算场景,用spark计算好的数据 或爬虫爬取的数据, 然后写入redis或nosql的数据库,最后由前端图形直接展示或数据下载,SmartChart支持这一块的应用 使用方法 # 你可以创建一个redis的连接池, 然后按照通用的方法建立数据集 不同的是, 数据集的SQL区不再是写sql代码, 而只需要写redis中的keyname 如redis中存储的数据是keyname 为 &ldquo;指标A&rdquo;, 数据 &lsquo;{&ldquo;长沙&rdquo;:1,&ldquo;上海&rdquo;:2}&rsquo; 这样我们只需要在数据集中写上 指标A 即可, 最后你会得到{&ldquo;长沙&rdquo;:1,&ldquo;上海&rdquo;:2}的返回结果 如果你需要的是表格格式, 那么你只需要往redis中存入一个二维数组, 比如: [[&ldquo;省份&rdquo;,&ldquo;数量&rdquo;],[&ldquo;长沙&rdquo;,1],[&ldquo;上海&rdquo;,2]] 注意数据存入redis为字符串格式,你可使用python的json.dumps来生成字符串格式存入 当然我们也支持同一个数据中获取多个keyname # 比如还有一个&quot;指标B&quot;, 数据是'12345' 我们可以同时写上两个指标,用分号隔开: 指标A;指标B 最后你会得到的结果是: { &ldquo;指标A&rdquo;:{&ldquo;长沙&rdquo;:1,&ldquo;上海&rdquo;:2}, &ldquo;指标B&rdquo;:12345 }

#

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/sqlalchemy%E8%BF%9E%E6%8E%A5/ Mon, 01 Jan 0001 00:00:00 +0000

https://help.smartchart.cn/docs/2.%E6%95%B0%E6%8D%AE%E9%9B%86%E8%AF%B4%E6%98%8E/%E7%89%B9%E6%AE%8A%E6%95%B0%E6%8D%AE%E6%BA%90/sqlalchemy%E8%BF%9E%E6%8E%A5/
常规的连接池的设定, 大家应该都很清楚了, Smartchart也支持sqlalchemy连接, 对于一些smartchart不支持的数据源可以使用此方法 配置方法: 只用填以上内容, 其它可留空 连接地址的写法参考sqlalchemy说明: 可选参数。一个标准的链接URL是这样的： dialect+driver://username:password@host:port/database dialect，是数据库类型，大概包括：sqlite, mysql, postgresql, oracle, or mssql. driver，是使用的数据库API，驱动，连接包，随便叫什么吧。 username，用户名 password，密码 host，网络地址，可以用ip，域名，计算机名，当然是你能访问到的。 port，数据库端口。 databas，数据库名。 其实这些也就dialect和dirver需要解释。 二：连接sqlite3 1，驱动 sqlite3是个文件数据库，不需要什么驱动，或者说python内置了驱动。 2，标准连接参数 # sqlite://&lt;nohostname&gt;/&lt;path&gt; 没有hostname 3，各种链接参数 # 相对路径，就是这个python文件同目录下foo.db engine = create_engine(&#39;sqlite:///foo.db&#39;) #绝对路径 #Unix/Mac下用四条////表示 engine = create_engine(&#39;sqlite:////absolute/path/to/foo.db&#39;) #Windows下用三条///加盘符路径用两条\\ engine = create_engine(&#39;sqlite:///C:\\path\\to\\foo.db&#39;) #Windows 也可以这么用三条///加盘符路径用一条\ engine = create_engine(r&#39;sqlite:///C:\path\to\foo.db&#39;) #数据库建在内存里。URI保持为空即可 engine = create_engine(&#39;sqlite://&#39;) 三：连接mysql（mariadb） sqlalchemy默认使用mysql-python作为链接驱动，既default模式 选哪种驱动，就装哪个包。 1，default默认链接方式 engine = create_engine(&#39;mysql://scott:tiger@localhost/foo&#39;) 2，# mysql-python，声明使用mysql-python驱动 engine = create_engine(&#39;mysql+mysqldb://scott:tiger@localhost/foo&#39;) 3，MySQL-connector-python 声明使用MySQL-connector-python驱动（推荐使用） engine = create_engine(&#39;mysql+mysqlconnector://scott:tiger@localhost/foo&#39;) 4，OurSQL 声明使用OurSQL驱动 engine = create_engine(&#39;mysql+oursql://scott:tiger@localhost/foo&#39;) 四：连接Microsoft SQL Server sqlalchemy默认使用 pyodbc作为链接驱动。 1，pyodbc engine = create_engine(&#39;mssql+pyodbc://scott:tiger@mydsn&#39;) 2，pymssql engine = create_engine(&#39;mssql+pymssql://scott:tiger@hostname:port/dbname&#39;) 五：连接PostgreSQL PostgreSQL默认使用 psycopg2作为链接驱动，既default模式 1， default engine = create_engine(&#39;postgresql://scott:tiger@localhost/mydatabase&#39;) 2，psycopg2 engine = create_engine(&#39;postgresql+psycopg2://scott:tiger@localhost/mydatabase&#39;) 3， pg8000 engine = create_engine(&#39;postgresql+pg8000://scott:tiger@localhost/mydatabase&#39;) 六：连接Oracle Oracle可能只有 cx_oracle一个驱动包，既default模式和声明模式一样。 1，default engine = create_engine(&#39;oracle://scott:tiger@127.