---
weight: 3
type : docs
bookFlatSection : false
---

smartchart已实现大部分常用的数据源连接, 对于其它的, 您也可以使用python数据源进行处理
但是使用python数据源有一定的缺陷, 需要在dataset上写python代码, 不能复用
对于一些带连接信息的还需要重复写入
所以你还可以使用自定义数据源
#### 应用场景
- 未内置的数据源, 如需要使用sparkSQL, ES等
- 标准处理满足不了要求, 需要对数据进行预处理的情况
- 需要刷新时触发预警等自定义动作
- 需要自定义写入方法, 个性化查询需求, 甚至是实时爬取数据

#### 使用方法
- 首先你需要新建一个python脚本文件, 如diy_conn.py
- 复制以下代码到这个文件, 然后编写你的自定义查询方法
```python
def dataset(*args, **kwargs):
    """
    返回查询数据集
    :return: 二维数组或JSON字典
    """
    sqlList = args[0]   # 数据集编辑界面的输入已按分号拆分成数组 [sql1, sql2...]
    config = args[1]    # 相关的配置字典{'host','port','user','password','db'}
    # 插入你的数据查询及处理代码, 生成result即可
    result = [[]]

    return result

def insert_dataset(*args, **kwargs):
    """
    数据填表实现
    """
    contents = args[0]  # 传入的数据集二维数组格式
    table = args[1]   # 配置中的表名
    config = args[3]  # 相关的配置字典{'host','port','user','password','db'}
    # 插入你的写入数据逻辑代码


```

- 在任意的仪表盘开发界面中 "模板" --> 点击上传图标, 将这个python文件上传即可
![输入图片说明](https://images.gitee.com/uploads/images/2022/0412/173154_8362828e_5500438.png "屏幕截图.png")

- 新建数据源, 驱动填写之前上传过的文件名, 比如我们这个是diy_conn, 其它参数按照你自定义的需求填写, 会自动传入你的自定义函数
![输入图片说明](https://images.gitee.com/uploads/images/2022/0412/173434_dfe99697_5500438.png "屏幕截图.png")

之后你可以正常使用这个自定义数据源了

如果你对python不熟悉, 也可按需定制, 你只需上传即可使用


