Python遇上SQL,于是一个好用的Python第三方库出现了

1. 演示数据

本文的所有演示数据,均是基于下方的四张表。下面这四张表大家应该不陌生,这就是网传50道经典MySQL面试题中使用到的几张原表。关于下方各表之间的关联关系,我就不给大家说明了,仔细观察字段名,应该就可以发现。

2. pandasql的使用

1)简介

pandas中的DataFrame是一个二维表格,数据库中的表也是一个二维表格,因此在pandas中使用sql语句就显得水到渠成,pandasql使用SQLite作为其操作数据库,同时Python自带SQLite模块,不需要安装,便可直接使用。

这里有一点需要注意的是:使用pandasql读取DataFrame中日期格式的列,默认会读取年月日、时分秒,因此我们要学会使用sqlite中的日期处理函数,方便我们转换日期格式,下方提供sqlite中常用函数大全,希望对你有帮助。

sqlite函数大全:http://suo.im/5DWraE

导入相关库:

import pandas as pd
from pandasql import sqldf

 

2)声明全局变量的2种方式

  • ① 在使用之前,声明该全局变量;
  • ② 一次性声明好全局变量;

① 在使用之前,声明该全局变量

Python学习交流裙:279199867 ###
df1 = pd.read_excel("student.xlsx")
df2 = pd.read_excel("sc.xlsx")
df3 = pd.read_excel("course.xlsx")
df4 = pd.read_excel("teacher.xlsx")


global df1
global df2
global df3
global df4
query1 = "select * from df1 limit 5"
query2 = "select * from df2 limit 5"
query3 = "select * from df3"
query4 = "select * from df4"

sqldf(query1)
sqldf(query2)
sqldf(query3)
sqldf(query4)

 

部分结果如下:
Python遇上SQL,于是一个好用的Python第三方库出现了

② 一次性声明好全局变量

df1 = pd.read_excel("student.xlsx")
df2 = pd.read_excel("sc.xlsx")
df3 = pd.read_excel("course.xlsx")
df4 = pd.read_excel("teacher.xlsx")

pysqldf = lambda q: sqldf(q, globals())

query1 = "select * from df1 limit 5"
query2 = "select * from df2 limit 5"
query3 = "select * from df3"
query4 = "select * from df4"

sqldf(query1)
sqldf(query2)
sqldf(query3)
sqldf(query4)

 

部分结果如下:
Python遇上SQL,于是一个好用的Python第三方库出现了

3)写几个简单的SQL语句
① 查看sqlite的版本

student = pd.read_excel("student.xlsx")
pysqldf = lambda q: sqldf(q, globals())
query1 = """
    select sqlite_version(*)
"""
pysqldf(query1)

 

结果如下:
Python遇上SQL,于是一个好用的Python第三方库出现了

② where筛选

student = pd.read_excel("student.xlsx")
pysqldf = lambda q: sqldf(q, globals())
query1 = """
    select * 
    from student 
    where strftime('%Y-%m-%d',sage) = '1990-01-01'
"""
pysqldf(query1)

 

结果如下:
Python遇上SQL,于是一个好用的Python第三方库出现了

③ 多表连接

student = pd.read_excel("student.xlsx")
sc = pd.read_excel("sc.xlsx")


pysqldf = lambda q: sqldf(q, globals())
query2 = """
    select *
    from student s
    join sc on s.sid = sc.sid
"""
pysqldf(query2)

 

部分结果如下:
Python遇上SQL,于是一个好用的Python第三方库出现了

④ 分组聚合

student = pd.read_excel("student.xlsx")
sc = pd.read_excel("sc.xlsx")


pysqldf = lambda q: sqldf(q, globals())
query2 = """
    select s.sname as 姓名,sum(sc.score) as 总分
    from student s
    join sc on s.sid = sc.sid
    group by s.sname
"""
pysqldf(query2)

 

结果如下:
Python遇上SQL,于是一个好用的Python第三方库出现了

⑤ union查询

student = pd.read_excel("student.xlsx")
pysqldf = lambda q: sqldf(q, globals())
query1 = """
    select * 
    from student 
    where strftime('%Y-%m',sage) = '1990-01'
    union
    select * 
    from student 
    where strftime('%Y-%m',sage) = '1990-12'
"""
pysqldf(query1)

 

结果如下:
Python遇上SQL,于是一个好用的Python第三方库出现了

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python遇上SQL,于是一个好用的Python第三方库出现了 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 为了快速了解原神,我用Python爬取了原神所有角色信息!

    原神是由米哈游制作发行的一款开放世界冒险游戏,号称全球玩家5600W,可以说是非常热门了,朋友都说好玩,哎,但我就是不玩,就是皮…       但是,今天我就要用python来打开“原神世界”的大门!探索一下游戏角色! 话不多说直接开整! 准备工作 这是本次需要使用到 的工具 nodejs pyexecjs requests 编辑器:pycharm环境:Py…

    Python开发 2023年3月31日
    00
  • Python批量爬取美女写真集,只需27行代码,实现多页爬取!

    兄弟们,上一个系列大家多少有点不太喜欢,那今天上点不一样的。     来吧,直接整活~ 先准备一下 首先咱们需要安装一下这两个第三方模块 requests >>> # pip install requests parsel >>> # pip install parsel 不会安装的小伙伴,键盘按住win+r 在弹出来的运…

    2023年4月2日
    00
  • 为了防止这个网站消失,我连夜用Python离线了上万张图片

    之前好多高质量网站都不见了,肯定是你们整活整多了,趁你们不注意,我先悄悄多保存点~ 事前准备 让我们开始今天的操作 1、环境配置** 安装一个Python和pycharm就好了 2、模块使用 requests # 数据请求 parsel # 解析模块 (提取数据)   这两个模块没有安装的话,先安装一下,win+R 输入cmd 按回车弹出命令提示符窗口,输入…

    Python开发 2023年4月2日
    00
  • 不怕新歌有多嗨,就怕老歌带DJ,用Python批量下载dj歌曲!

    俗话说,不怕新歌有多嗨,就怕老歌带dj,为了验证这句话,于是我直接找了个dj网,用Python把dj都下载下来,亲身体验一下! 环境模块 软件 Python3.8 pycharm2021   模块 import requests import re   requests是数据请求模块,第三方模块,需要手动安装一下,win+r打开运行框,输入cmd按回车,然后…

    2023年4月2日
    00
  • 只用20行代码,Python实现爬取网易云音乐,非常简单!

    哈喽,大家好,今天咱们试试只用20行代码来实现批量获取网抑云文件保存本地,炒鸡简单! 悄悄的告诉你,其实不到20行代码~     你需要准备 本次使用的环境是Python3.8,编辑器是pycharm  模块使用的是requests、re、os 三个,其中requests是第三方模块,需要手动安装一下,re、os都是内置模块,不需要安装。 pip insta…

    2023年4月2日
    00
  • 20行Python代码实现爬取起点小说

    相信在座各位应该没有几个不看小说的吧,嘿嘿~一般来说咱们书荒的时候怎么办?自然是去起某点排行榜先找到小说名字,然后再找度娘一搜,哎 ,笔趣阁就出来答案了,美滋滋~ 但是那多麻烦,咱们直接用python,直接全部下载下来慢慢看不就好了~小孩子才做选择,成年人选择都要… 好了,不啰嗦了,等下大家要骂我了~ 准备工作 环境模块 咱们没装软件的装一下软件,没装模块的…

    Python开发 2023年4月2日
    00
  • 当我用Python做了个自动工作汇报的脚本后,每天都闲的只能摸鱼

    哈喽兄弟们 之前经常编写Python脚本来进行数据处理、数据传输和模型训练。随着数据量和数据复杂性的增加,运行脚本可能需要一些时间。在等待数据处理完成时可以同时做一些其他工作。 为了达到这个目的,编写了一组用于解决这个问题的Python脚本。使用这些脚本向手机发送流程更新、可视化和完成通知。当偶尔拥有这些自由的时刻,你可以享受而不是担心模型的进度。 一、需要…

    Python开发 2023年4月2日
    00
  • 重温Python基础——字符串

    哈喽,兄弟们, 本文带大家复习一下Python基础中的字符串,不知道大家还记得多少内容呢? 字符串 1、字符串就是一系列字符 在python中,用引号括起的都是字符串,其中引号可以是单的,也可以是双的。例如: “i am not happy” ‘i am not happy’   这种灵活性能在字符串中包含引号和撇号,例如: “she told me ‘Py…

    Python开发 2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部