讲师中心 微信公众号
AI工具推荐 视频效率加速

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

雨伟吖_8139

雨伟吖_8139

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

|

1136人浏览过

|

来源于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>

通过命令安装依赖库:

python-pro
python-pro

高级 Python 特性、异步编程、性能调优、静态类型、内存管理、Python 内部机制及生态库方面的专家。

下载
代码语言: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工具

更多
豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

音述AI
音述AI Hot

一款AI音频处理工具,主要用于音述AI是一个以“用声音述说故事”为核心的 AI 音乐创作与声音分享社区,适合需要提升相关任务效率的用户。

讯飞绘文

讯飞绘文是一款由科大讯飞推出的一站式 AIGC 内容运营平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

相关专题

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

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

4083

2023.10.12

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

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

871

2023.10.27

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

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

1049

2024.02.23

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

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

5961

2024.03.06

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

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

2843

2024.03.06

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

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

5920

2024.04.07

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

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

7901

2024.04.29

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

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

1070

2024.04.29

FrankenPHP集成Laravel详细教程
FrankenPHP集成Laravel详细教程

本专题提供FrankenPHP集成Laravel的详细配置指南,全面解析运行原理、开发环境搭建、Caddyfile配置、Octane工作模式、数据库连接、队列任务、定时任务和生产环境优化,解决部署过程中常见的报错与兼容性问题。

0

2026.10.08

热门下载

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

精品课程

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn