0

0

基于Python+Ollama DeepSeek与MySQL进行数据分析探索

蓮花仙者

蓮花仙者

发布时间:2025-04-23 16:42:13

|

1095人浏览过

|

来源于php中文网

原创

1、前言

在当今数据驱动的时代,数据分析已成为企业决策和业务优化的关键。deepseek 作为一款强大的数据分析工具,能够帮助我们快速从海量数据中提取有价值的信息。本文将详细介绍如何将 ollama+python+deepseek 与数据库结合,进行高效的数据分析。

2、环境准备

这里我自己使用的是Windows11操作系统,因此接下来全部以Windows11操作系统为例。

windows11,配置8vCPU,16GB内存,512G磁盘Mysql数据库,这里使用了MySQL5.7版本Python环境,这里使用的是Python 3.11执行器3、本地部署3.1、安装ollama首先,到ollama官网下载对应版本,windows操作系统需要windows10及以上的版本。下载完成后,直接点击安装即可。
基于Python+Ollama DeepSeek与MySQL进行数据分析探索

安装完成后,在终端窗口输入以下命令:

代码语言:bash复制
<code class="bash">ollama -v</code>

可以看到对应的ollama版本,即表示安装成功。

基于Python+Ollama DeepSeek与MySQL进行数据分析探索
3.2、部署deepseek-r1模型

在ollama官网,搜索我们要部署的模型,这里选择deepseek-r1模型,可以看到列出所有蒸馏版本,我们这里由于配置原因,选择1.5b版本。

立即学习Python免费学习笔记(深入)”;

基于Python+Ollama DeepSeek与MySQL进行数据分析探索

接着输入以下命令,进行拉取模型:

代码语言:bash复制
<code class="bash">ollama pull deepseek-r1:1.5b# 当然也可以一部到位直接启动ollama run deepseek-r1:1.5b</code>

显示success,即表示拉取成功。

基于Python+Ollama DeepSeek与MySQL进行数据分析探索

拉取成功后,启动该模型:

代码语言:bash复制
<code class="bash">ollama run deepseek-r1:1.5b</code>

到此,已经启动成功:

基于Python+Ollama DeepSeek与MySQL进行数据分析探索

可以进行对话了:

基于Python+Ollama DeepSeek与MySQL进行数据分析探索
4、Python接入本地模型

这里先给出Python这次所需要的一些依赖库,requirements.txt:

代码语言:bash复制
<code class="bash">mysql-connector-python==8.1.0ollama==0.1.6python-dotenv==1.0.0</code>

通过命令安装依赖库:

如此AI员工
如此AI员工

国内首个全链路营销获客AI Agent

下载
代码语言:bash复制
<code class="bash">pip install -r requirements.txt</code>
4.1、示例代码

假设我们有一张表sale_orders的DDL如下:

代码语言:sql复制
<code class="sql">CREATE TABLE `wxmapp`.`Untitled`  (  `id` int NOT NULL,  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '销售人员名称',  `order_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '订单车型',  `sale_time` datetime NULL DEFAULT NULL COMMENT '销售日期',  `sale_count` int NULL DEFAULT NULL COMMENT '销售数量',  PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;</code>

预生成的数据:

基于Python+Ollama DeepSeek与MySQL进行数据分析探索

接着,我们尝试让DeepSeek分析出销量最高的订单车型。以下是完整代码:

代码语言:python代码运行次数:0运行复制
<code class="python">import mysql.connectorimport ollama# 数据库连接配置(使用mysql.py中的配置)config = {    'user': 'xxx',    'password': 'xxx',    'host': 'xxx',    'database': 'xxx',    'raise_on_warnings': True,    'charset': 'utf8mb4'}# 连接数据库try:    conn = mysql.connector.connect(**config)    cursor = conn.cursor()    cursor.execute("SELECT order_name, sale_count FROM sale_orders")    rows = cursor.fetchall()    # 使用 DeepSeek 处理数据    result = ollama.generate(model='deepseek-r1:1.5b',                             prompt=f'有一张销售订单数据:{rows}。其中order_name表示订单车型名称,sale_count表示销售数量。现在请分析销量前三的订单车型。直接给出结果,不需要给出推理过程').get(        'response', '')    print(f"DeepSeek Analysis: {result}")except mysql.connector.Error as err:    print(f"Error: {err}")finally:    # 关闭连接    if conn.is_connected():        cursor.close()        conn.close()</code>

运行后得到结果:

基于Python+Ollama DeepSeek与MySQL进行数据分析探索
4.2、附加一些功能

上面是简单的DeepSeek进行数据分析的功能,对于数据量小的来说可能还行,但是对于数据量大的来说还是够呛。但是我们可以用他来进行一些数据结构的完整性检查、有效性检查以及给出一些合理的建议。

这里我添加了一些额外的功能,用于扫描库表是否包含了主键,是否字段长度过长没有约束,是否时间类型用了字符串等。

代码语言:python代码运行次数:0运行复制
<code class="python"># 连接数据库try:    conn = mysql.connector.connect(**config)    cursor = conn.cursor()    # 执行查询    # 获取索引信息    cursor.execute("SHOW INDEX FROM sale_orders")    indexes = cursor.fetchall()    print("\n索引信息:")    for index in indexes:        print(f"索引名称: {index[2]}, 类型: {'唯一索引' if index[1] == 0 else '普通索引'}, 字段: {index[4]}")    # 增强主键检测    cursor.execute("""        SELECT GROUP_CONCAT(DISTINCT COLUMN_NAME)         FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE         WHERE TABLE_NAME = 'sale_orders'         AND CONSTRAINT_NAME = 'PRIMARY'""")    pk_info = cursor.fetchall()    # 多层空值检查和类型验证    if pk_info and len(pk_info) > 0 and pk_info[0] and len(pk_info[0]) > 0:        primary_key = pk_info[0][0]        if isinstance(primary_key, str):            columns = primary_key.split(',')            columns_count = len(columns)            columns_str = primary_key        else:            columns_count = 0            columns_str = ''    else:        columns_count = 0        columns_str = ''    status_desc = (        f'复合主键({columns_count}个字段)' if columns_count > 1 else        '单字段主键' if columns_count == 1 else        '无主键'    )    print(f"\n主键有效性检查:{status_desc} ({columns_str})")    # 字段类型效率检查(扩展白名单机制)    cursor.execute("""        SELECT COLUMN_NAME, COLUMN_TYPE, DATA_TYPE         FROM INFORMATION_SCHEMA.COLUMNS         WHERE TABLE_NAME = 'sale_orders'         AND (DATA_TYPE IN ('text','blob')             OR COLUMN_TYPE LIKE '%varchar(255)%'             OR NUMERIC_SCALE IS NULL AND DATA_TYPE = 'decimal'            OR (COLUMN_NAME LIKE '%time%' AND DATA_TYPE NOT IN ('date','datetime','timestamp')))""")    inefficient_columns = cursor.fetchall()    print("\n低效字段检测:")    for col in inefficient_columns:        reason = 'TEXT/BLOB类型' if col[2] in ('text','blob') else \                '过度分配的VARCHAR' if 'varchar(255)' in col[1] else \                '不精确的DECIMAL类型' if col[2] == 'decimal' and NUMERIC_SCALE is None else \                '时间字段使用字符串类型' if 'time' in col[0].lower() and col[2] in ('varchar','text') else '未知类型'        print(f"字段 {col[0]}: {col[1]} ({reason})")    # 索引有效性评估    cursor.execute("SHOW INDEXES FROM sale_orders")    indexes = {}    for idx in cursor.fetchall():        if idx[2] not in indexes:            indexes[idx[2]] = {'columns': [], 'unique': idx[1]}        indexes[idx[2]]['columns'].append(idx[4])    print("\n索引有效性评估:")    for idx_name, meta in indexes.items():        coverage = '复合索引' if len(meta['columns'])>1 else '单字段索引'        score = '★'*(3 if meta['unique'] else 2 if len(meta['columns'])>1 else 1)        print(f"{idx_name}: {coverage}({','.join(meta['columns'])}) {score}星评级")    # 数据量统计    cursor.execute("SELECT COUNT(*) FROM sale_orders")    record_count = cursor.fetchone()[0]    print(f"\n数据量统计:{record_count}条记录{' (超过500万建议分表)' if record_count > 5000000 else ''}")    print("\n" + "="*40 + "\n")except mysql.connector.Error as err:    print(f"Error: {err}")finally:    # 关闭连接    if conn.is_connected():        cursor.close()        conn.close()</code>

这里只是对单张表的检查:

基于Python+Ollama DeepSeek与MySQL进行数据分析探索

如果重新封装一下,可以对我们整个库进行扫描,以及对我们数据进行基本的分析:

基于Python+Ollama DeepSeek与MySQL进行数据分析探索

甚至给出了数据中访问量最高的分析,预测了主题趋势和兴趣点。

基于Python+Ollama DeepSeek与MySQL进行数据分析探索
4.3、其他的数据库

不仅支持MySQL数据库,同样支持主流的PostgreSQL和SQLite等。

4.3.1、PostgreSQL 示例代码语言:python代码运行次数:0运行复制
<code class="python">import psycopg2# 数据库连接配置conn = psycopg2.connect(    dbname="your_database",    user="your_username",    password="your_password",    host="your_host",    port="your_port")cursor = conn.cursor()cursor.execute("SELECT * FROM your_table")rows = cursor.fetchall()for row in rows:    print(row)cursor.close()conn.close()</code>
4.3.2、SQLite 示例代码语言:python代码运行次数:0运行复制
<code class="python">import sqlite3# 连接 SQLite 数据库conn = sqlite3.connect('your_database.db')cursor = conn.cursor()cursor.execute("SELECT * FROM your_table")rows = cursor.fetchall()for row in rows:    print(row)cursor.close()conn.close()</code>
5、总结

如今AI火热的年代,大模型+数据分析必然是个趋势。构建从数据提取,到智能分析,再到可视化呈现的全流程自动化,以及风险预测和识别也将成为另一个业务价值呈现点。

相关文章

AI工具
AI工具

AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型,支持联网搜索。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

1068

2023.10.12

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

339

2023.10.27

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

379

2024.02.23

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

1926

2024.03.06

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

379

2024.03.06

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

1478

2024.04.07

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

585

2024.04.29

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

437

2024.04.29

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

6

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 6.3万人学习

PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.9万人学习

Git 教程
Git 教程

共21课时 | 3.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号