SQL连接Python

news2024/10/3 2:48:05

对于运营部门的Yoyo来说,她想要知道夜曲优选的订单都来自哪些省份,每个省份的总订单数以及总订单金额分别是多少。
这时小鹿就会通过SQL对连接的数据库进行查询,再将结果传递给Python处理,并帮助Yoyo生成可视化图表。

我们先来快速的体验一下这个过程。

Step1.1:订单表orders

订单表orders是夜曲优选数据库中用于记录订单数据的表。
小鹿通过SQL语句,可以快速获取订单表的每一行信息。

SELECT *
FROM orders; 

Step1.2:地址表address

地址表address是夜曲优选数据库中用于记录收件地址数据的表。
小鹿通过SQL语句,可以快速获取地址表的每一行信息。

SELECT *
FROM address; 

Step2:两表连接

为了统计每笔订单发往的省份信息,小鹿使用SQL语句将订单表与地址表关联起来。
按照省份对数据进行分组,并计算每个省份的订单量与订单总价。

SELECT a.province, COUNT(*), SUM(total_price)
FROM orders o 
JOIN address a 
ON o.addr_id=a.id
GROUP BY a.province;

Step3:Sql连接Pyhton

最后小鹿将刚才的查询语句整合到Python程序中。
利用Python连接数据库,并通过刚才的SQL语句获取每个省份下订单的数据,绘制成可以交互的图表信息。

import pymysql 
from pyecharts.charts import Bar
from pyecharts import options as opts
from pyecharts.globals import ThemeType
from pyecharts.charts import Page
from pyecharts.charts import Geo
from pyecharts.globals import ChartType, SymbolType


mysql_conn = pymysql.connect(
    host='localhost', 
    port=3306, 
    user='yequ', 
    password='yequ123', 
    database='nocturneshop',
    charset='utf8')

cur = mysql_conn.cursor()


def get_elems():
    sql = """
     SELECT a.province,COUNT(*),SUM(total_price)
     FROM orders o 
     JOIN address a 
     ON o.addr_id=a.id
     GROUP BY a.province;
    """

    cur.execute(sql)
    elems = cur.fetchall()
    return elems

def create_map():
    data=get_elems()
    map_data=[]
    line_map=[]
    y_data=[]
    for i in range (0,len(data)):
        
        if data[i][0][:3] not in ["黑龙江","内蒙古"]:
            map_data.append([data[i][0][:2],data[i][1]])
            line_map.append(("四川",data[i][0][:2]))
        else:
            map_data.append([data[i][0][:3],data[i][1]])
            line_map.append(("四川",data[i][0][:3]))
        

    map = (
    Geo(init_opts=opts.InitOpts(theme=ThemeType.DARK))
    .add_schema(
        maptype="china",
        is_roam=False,
        itemstyle_opts=opts.ItemStyleOpts(color="#364A66",border_color="#58667a")
    )
    .add(
        "各省订单数量",
        map_data,
        type_=ChartType.EFFECT_SCATTER,
        
    )
    .add(
        "订单分布",
        line_map,
        type_=ChartType.LINES,
        effect_opts=opts.EffectOpts(
            symbol=SymbolType.ARROW, symbol_size=6, color="red"
        ),
        linestyle_opts=opts.LineStyleOpts(curve=0.2),
    )
    
    .set_series_opts(label_opts=opts.LabelOpts(is_show=False))
    .set_global_opts(
        visualmap_opts=opts.VisualMapOpts(),
        title_opts=opts.TitleOpts(title="订单分布情况"),
    )
    )
    return map

def create_bar():
    data=get_elems()
    x_data=[]
    y_data=[]
    for i in range (0,len(data)):
        
        if data[i][0][:3] not in ["黑龙江","内蒙古"]:
            x_data.append(data[i][0][:2])
            y_data.append(data[i][2])
        else:
            x_data.append(data[i][0][:3])
            y_data.append(data[i][2])
            
    bar= (
        Bar(init_opts=opts.InitOpts(theme=ThemeType.DARK))
        .add_xaxis(x_data)
        .add_yaxis("总订单金额", y_data)
        .set_series_opts(
            label_opts=opts.LabelOpts(position="right",font_size=12),
            
        )
        .set_global_opts(title_opts=opts.TitleOpts(title="各省总订单金额"),
            xaxis_opts=opts.AxisOpts(),
            yaxis_opts=opts.AxisOpts(),
            datazoom_opts=opts.DataZoomOpts(orient= "vertical",range_start=50,is_zoom_lock=True),
            
        )
        .reversal_axis()
    )
    
    return bar

def page_layout():
    page = Page()
    page.add(
        create_map(),
        create_bar()       
    )
    page.render("/Users/geo.html")

if __name__ == "__main__":
    page_layout()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2185424.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工程师 - Github文件访问加速

如果是下载单独的又比较大的Github上的文件,网速较差时,可以使用镜像网站,比如下面这个工具。 GitHub 文件加速 - Sonder (akams.cn) GitHub 文件加速 - Sonder 另外,也可以在搜索引擎里直接搜索“Github 文件加速”,…

MySQL高阶2041-面试中被录取的候选人

目录 题目 准备数据 分析数据 总结 题目 编写解决方案,找出 至少有两年 工作经验、且面试分数之和 严格大于 15 的候选人的 ID 。 可以以 任何顺序 返回结果表。 准备数据 Create table If Not Exists Candidates (candidate_id int, name varchar(30), yea…

检索增强生成(RAG)有什么好的优化方案?

RAG(检索增强生成)是一种结合了信息检索和内容生成的技术,常用于提升人工智能回答问题的准确性和相关性。本文将RAG的优化分为两个主要方向进行介绍:基础功能优化和架构优化。 一、RAG基础功能优化 基础功能优化主要是对RAG的每个…

以太网交换安全:端口安全

一、端口安全介绍 端口安全是一种网络设备防护措施,通过将接口学习到的动态MAC地址转换为安全MAC地址(包括安全动态MAC和Sticky MAC),阻止除安全MAC和静态MAC之外的主机通过本接口和设备通信,从而增强设备的安全性。以…

计组复习笔记

计组笔记 汇编部分 通用寄存器(General Registers): AX (Accumulator): 用于累加运算,也是乘法和除法的默认寄存器。BX (Base Register): 可以用作一个基址寄存器,通常用于存放数据的基地址。CX (Counter Register): 通常用于循环…

Lab3 【哈工大_操作系统】系统调用

本节将更新哈工大《操作系统》课程第三个 Lab 实验 系统调用。按照实验书要求,介绍了非常详细的实验操作流程,并提供了超级无敌详细的代码注释。文末附完整标准答案代码,包括系统调用实现 who.c 和测试函数 iam.c、whoami.c 以及超详细注释。…

mac M2安装单机版 MongoDB 7.x

1. 通过tgz包安装MongoDB 1.1 下载并解压缩安装包 官网下载 mac OS 的 MongoDB 安装包,这里选择7.x版本进行安装(下载链接) 下载好的tgz包,双击解压缩,并重命名为mongdb 将安装包拷贝到安装目录,笔者的…

深入解析开源大模型的GPU资源需求与优化策略

随着大模型的火热很多项目中都使用到了开源大模型,这时候准确评估大模型的GPU资源非常重要,主要有下面几个方面 成本效率:GPU是昂贵的资源。高估内存需求可能导致在硬件上的不必要支出,而低估则可能导致系统故障或性能下降。 性…

【数据结构】什么是红黑树(Red Black Tree)?

🦄个人主页:修修修也 🎏所属专栏:数据结构 ⚙️操作环境:Visual Studio 2022 目录 📌红黑树的概念 📌红黑树的操作 🎏红黑树的插入操作 🎏红黑树的删除操作 结语 📌红黑树的概念 我们之前学过了…

资源《Arduino 扩展板3-WS2812》说明。

资源链接: Arduino 扩展板3-WS2812 1.文件明细: 2.文件内容说明 包含:AD工程、原理图、PCB。 3.内容展示 4.简述 该文件为PCB工程,采用AD做的。 该文件打板后配合Arduino使用,属于Arduino的扩展板。 该文件主要…

通义千问“百宝箱”:效率神器,解放你的双手!

你在为播客转文字、音视频转写和长文本阅读而烦恼吗?今天,就让通义千问的“百宝箱”来帮你解决这些难题! 最近,我发现通义千问首页隐藏着一个效率神器——“百宝箱”(现在更名为工具箱),简直是…

batch和momentum

🚀 机器学习系列前期回顾 1、初识机器学习 2、线性模型到神经网络 3、local minima的问题如何解决 🚀在初识机器学习中,了解了机器学习是如何工作的并引入了线性模型,在线性模型到神经网络这节,将线性模型进一步改进为…

FireRedTTS - 小红书最新开源AI语音克隆合成系统 免训练一键音频克隆 本地一键整合包下载

小红书技术团队FireRed最近推出了一款名为FireRedTTS的先进语音合成系统,该系统能够基于少量参考音频快速模仿任意音色和说话风格,实现独特的音频内容创造。 FireRedTTS 只需要给定文本和几秒钟参考音频,无需训练,就可模仿任意音色…

【Golang】关于Go语言字符串转换strconv

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

ProtoBuf快速上手

文章目录 创建 .proto文件编译 .proto文件编译后生成的文件序列化与反序列化的使用 此篇文章实现内容: 对一个通讯录的联系人信息,使用PB进行序列化,并将结果输出对序列化的内容使用PB进行反序列化,解析联系人信息并输出联系人信…

【成神之路】Ambari实战-015-代码生命周期-metainfo-category详解

1.Redis 集群 metainfo.xml 示例 <?xml version"1.0"?> <metainfo><schemaVersion>2.0</schemaVersion><services><service><!-- Redis 集群服务的基本信息 --><name>REDIS</name><displayName>Redi…

MongoDB的安装与增删改查基本操作

MongoDB是一种非关系型数据库&#xff0c;是NoSQL语言&#xff0c;但是又是最接近关系型数据库的。内部存储不是表结构&#xff0c;但是可以对数据进行表结构的操作。 一、安装 在官网&#xff1a;Download MongoDB Community Server | MongoDB下载系统对应的版本进行安装即可…

html+css+js实现Collapse 折叠面板

实现效果&#xff1a; HTML部分 <div class"collapse"><ul><li><div class"header"><h4>一致性 Consistency</h4><span class"iconfont icon-jiantou"></span></div><div class"…

UFS 3.1架构简介

整个UFS协议栈可以分为三层:应用层(UFS Application Layer(UAP)),传输层(UFS Transport Layer(UTP)),链路层(UIC InterConnect Layer(UIC))。应用层发出SCSI命令(UFS没有自己的命令使用的是简化的SCSI命令),在传输层将SCSI分装为UPIU,再经过链路层将命令发送给Devices。下…

通信工程学习:什么是TCP传输控制协议

TCP&#xff1a;传输控制协议 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是因特网协议套件中最重要的协议之一&#xff0c;它为应用程序提供了可靠、面向连接的通信服务。以下是TCP协议的详细解释&#xff1a; 一、TCP传输控制协议的…