文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

LangChain 使用文本描述的方式操作MySQL中的数据

2023-08-16 17:23

关注

一、LangChain 使用文本描述的方式操作MySQL中的数据

LangChain 中提供了 SQLDatabaseChain ,可以通过语义文本去操作 MySQL中的数据,例如在 MySQL 中有如下表数据:

用户表

CREATE TABLE `user` (  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',  `name` varchar(255) DEFAULT NULL COMMENT '姓名',  `age` int DEFAULT NULL COMMENT '年龄',  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户表';

写入测试数据:

INSERT INTO `langchain`.`user`(`id`, `name`, `age`) VALUES (1, '张三', 20);INSERT INTO `langchain`.`user`(`id`, `name`, `age`) VALUES (2, '李四', 60);INSERT INTO `langchain`.`user`(`id`, `name`, `age`) VALUES (3, '王五', 30);INSERT INTO `langchain`.`user`(`id`, `name`, `age`) VALUES (4, '赵六', 31);INSERT INTO `langchain`.`user`(`id`, `name`, `age`) VALUES (5, '小明', 35);INSERT INTO `langchain`.`user`(`id`, `name`, `age`) VALUES (6, '小红', 25);INSERT INTO `langchain`.`user`(`id`, `name`, `age`) VALUES (7, '小蓝', 40);

角色表

CREATE TABLE `role` (  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',  `role` varchar(255) DEFAULT NULL COMMENT '角色名',  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='角色表';

写入测试数据:

INSERT INTO `langchain`.`role`(`id`, `role`) VALUES (1, 'admin');INSERT INTO `langchain`.`role`(`id`, `role`) VALUES (2, 'common');INSERT INTO `langchain`.`role`(`id`, `role`) VALUES (3, 'role1');INSERT INTO `langchain`.`role`(`id`, `role`) VALUES (4, 'role2');INSERT INTO `langchain`.`role`(`id`, `role`) VALUES (5, 'role3');

工作组表:

CREATE TABLE `work_group` (  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',  `group` varchar(255) DEFAULT NULL COMMENT '工作组',  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='工作组表';

写入测试数据:

INSERT INTO `langchain`.`work_group`(`id`, `group`) VALUES (1, 'A');INSERT INTO `langchain`.`work_group`(`id`, `group`) VALUES (2, 'B');INSERT INTO `langchain`.`work_group`(`id`, `group`) VALUES (3, 'C');INSERT INTO `langchain`.`work_group`(`id`, `group`) VALUES (4, 'E');

用户角色关系表

CREATE TABLE `user_role_mapping` (  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键ID',  `user_id` int DEFAULT NULL COMMENT '用户ID',  `role_id` int DEFAULT NULL COMMENT '角色ID',  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户角色关系表';

写入测试数据:

INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (1, 1, 1);INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (2, 1, 2);INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (3, 1, 3);INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (4, 2, 4);INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (5, 2, 5);INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (6, 3, 2);INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (7, 4, 2);INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (8, 5, 2);INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (9, 6, 2);INSERT INTO `langchain`.`user_role_mapping`(`id`, `user_id`, `role_id`) VALUES (10, 7, 5);

用户工作组关系表

CREATE TABLE `user_work_group_mapping` (  `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',  `user_id` int DEFAULT NULL COMMENT '用户ID',  `group_id` int DEFAULT NULL COMMENT '工作组ID',  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='用户工作组关系表';

写入测试数据:

INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (1, 1, 1);INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (2, 1, 2);INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (3, 1, 3);INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (4, 2, 1);INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (5, 2, 2);INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (6, 2, 3);INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (7, 3, 2);INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (8, 3, 3);INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (9, 4, 1);INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (10, 4, 2);INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (11, 5, 2);INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (12, 5, 4);INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (13, 6, 3);INSERT INTO `langchain`.`user_work_group_mapping`(`id`, `user_id`, `group_id`) VALUES (14, 7, 2);

构建 SQLDatabaseChain

from langchain import OpenAI, SQLDatabase, SQLDatabaseChainimport osdb_user = "root"db_password = "root"db_host = "127.0.0.1"db_name = "langchain"db = SQLDatabase.from_uri(f"mysql+pymysql://{db_user}:{db_password}@{db_host}/{db_name}")openai_api_key = os.environ["OPENAI_API_KEY"]llm = OpenAI(temperature=0, openai_api_key=openai_api_key)db_chain = SQLDatabaseChain(llm=llm, database=db, verbose=True)

使用文本描述操作数据:

questions = "有多少个用户"res = db_chain.run(questions)print("问题:", questions, "解答:", res)

在这里插入图片描述

questions = "统计30岁以下的人员信息"res = db_chain.run(questions)print("问题:", questions, "解答:", res)

在这里插入图片描述

questions = "统计每个工作组下的人员"res = db_chain.run(questions)print("问题:", questions, "解答:", res)

在这里插入图片描述

questions = "统计每个工作组下的人员数量"res = db_chain.run(questions)print("问题:", questions, "解答:", res)

在这里插入图片描述

questions = "统计每个校色下的人员数量"res = db_chain.run(questions)print("问题:", questions, "解答:", res)

在这里插入图片描述

questions = "统计30岁以下人员的工作组和角色"res = db_chain.run(questions)print("问题:", questions, "解答:", res)

在这里插入图片描述

来源地址:https://blog.csdn.net/qq_43692950/article/details/131378699

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯