Dify工作流节点(二)

代码执行节点

代码节点支持运行 Python / NodeJS 代码以在工作流程中执行数据转换。该节点极大地增强了   开发人员的灵活性,使他们能够在工作流程中嵌入自定义的 Python 或 Javascript 脚本,并以预 设节点无法达到的方式操作变量。

代码执行节点设置页如下:

通过配置选项,你可以指明所需的输入和输出变量,并撰写相应的执行代码。 案例四:创建chatflow,执行指定sql通过python代码读取数据库数据。

1) 在mysql中准备表及数据

mysql搭建省略。按照如下方式创建mysql库、表及插入数据:

create database mydb;
use mydb;

-- 学生表
CREATE TABLE mydb.students (


id INT COMMENT '学生id',
name VARCHAR(100) COMMENT '学生姓名',
age INT COMMENT '学生年龄' ) COMMENT='学生表';
INSERT INTO mydb.students (id, name, age) VALUES
(1,'张三',18),
(2,'李四',19),
(3,'王五',20),
(4,'赵六',21),
(5,'孙七',18),
(6,'周八',19),
(7,'吴九',20),
(8,'郑十',18),
(9,'钱十一',18),   (10,'刘十二',20);


-- 分数表
CREATE TABLE mydb.scores ( id INT COMMENT '学生id',
course_name VARCHAR(50) COMMENT '课程',
score INT COMMENT '成绩' ) COMMENT='分数表';
INSERT INTO mydb.scores (id, course_name, score) VALUES (1, '数学', 85),
(1, '语文', 78),
(2, '数学', 92), (2, '英语', 88),
(3, '数学', 76), (3, '物理', 82),
(4, '化学', 95), (5, '生物', 89),
(6, '历史', 79), (7, '地理', 91);

2) 创建开始节点并命名为“准备参数”

这里配置连接Mysql的host、port、user、password、database,sys.query作为用户输入的查 询SQL。

3) 创建代码执行节点并命名为“查询MySQL

第六步骤中查询MySQL的代码如下:

import pymysql import re
import json


def main(
host: str = '192.168.1.105',
port: int = 3306,
user: str = 'root',
password: str = '123456',
database: str = 'mydb',
sql: str = ''
):
"""
参数:
host: 数据库主机地址(默认: 192.168.1.105 )
port: 数据库端口(默认:3306)
user: 数据库用户名(默认: root)
password: 数据库密码(默认:123456)
database: 数据库名称(默认: mydb)
sql: 要执行的SELECT语句(必需)

返回:
- 总是返回 {"result": "完整字符串"} 格式
"""
# 校验必填参数
if not sql.strip():
return {"result": "SQL语句不能为空"}
# 严格校验SQL类型
cleaned_sql = re.sub(r'[\s\t\n]+', ' ', sql.strip().lower())
if not cleaned_sql.startswith("select"):
return {"result": "仅允许执行SELECT查询语句"}
# 阻止危险操作
forbidden_keywords = ['insert', 'update', 'delete', 'drop', 'alter', 'create', 'truncate'] if any(keyword in cleaned_sql for keyword in forbidden_keywords):
return {"result": "检测到非查询操作语句"}

try:
# 建立数据库连接
connection = pymysql.c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值