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日

相关文章

  • 网易云VIP歌曲没权限?还好我会Python,一分钟一个歌单,硬盘有点不够用了~

    人生苦短,我用Python 人之初,喜白嫖。大家都喜欢白嫖,我也喜欢,那么今天就来试试怎么白嫖抑云~       我不是,我没有,别瞎说~       一、你需要准备 1、环境 Python3.6以上 pycharm2019以上 2、模块 requests # 发送请求模块 第三方模块 exec js # 调用JS的模块   二、效果展示 可以看到,这两个是…

    2023年4月2日
    00
  • 【Python】pyqt6入门到入土系列,非常详细…

    最近真的是运气不好,国庆前一天,隔壁小区有人中招了,结果国庆出不了门,好不容易国庆结束了,准备上班,结果小区又有个叼毛中招了,搞得我直接国庆放了半个月,还只能在家过,没事干只能这里写写,那里弄弄,于是今天就把存货分享给大家了~ 一、什么是PyQt6? 简单介绍一下PyQt6 1、基础简介 PyQt6 Digia 公司的 Qt 程序的 Python 中间件。Q…

    Python开发 2023年4月2日
    00
  • 趁这个软件还没倒闭,我连夜用Python下载了所有壁纸…

    最近啊,有些人总是喜欢乱点一些七七八八的网站,没错,就是那个巳月,点完了又喊我爬,自己不爬! 就是这些,眼熟吗,反正我一个不认识!!一开始我是严词拒绝的!我是那样的人吗?要不是他请我喝奶茶让我来,我才不瞎搞呢!     软件环境 Python 3.8 解释器 Pycharm 编辑器 模块使用 requests 数据请求模块 re 正则 代码展示 代码仅做展示…

    Python开发 2023年4月2日
    00
  • 摸鱼也有效率——8个python自动化脚本提高打工人幸福感

    最近有许多打工人都在吐槽打工好难 每天都是执行许多重复的任务 例如阅读新闻、发邮件、查看天气、打开书签、清理文件夹等等, 使用自动化脚本,就无需手动一次又一次地完成这些任务, 非常方便啊有木有?! 而在某种程度上,Python 就是自动化的代名词。 今天就来和大家一起学习一下, 用8个python自动化脚本提高工作效率~ 快乐摸鱼~ 1、自动化阅读网页新闻 …

    Python开发 2023年4月2日
    00
  • 下班在家没事干?教大家用Python做一个任何视频都能看的软件, 当然,只能看正经的!

    这不,国庆假期结束了,又得开始上班下班之旅了~ 有没有被疫情堵着出不来的呢?     话说回来,放这么久的假,大家还记得Python吗? 这不是怕大家又不能出去旅游,回家了或者在宿舍没事干太无聊,所以特地给大家献上如何用Python来开发一款看视频不需要VIP的软件~ 如果想发给朋友用的话,咱们在打包成exe可执行软件,这样小伙伴也能一起用了~ 效果展示 我…

    2023年4月2日
    00
  • Python实现下载一个URL图片文件到本地

    今天咱们来实现一下,如何用Python实现下载一个URL图片文件保存本地。 涉及知识点 文件读写 基础语法 字符串处理 # 我还给大家准备了这些资料:Python视频教程、100本Python电子书、基础、爬虫、数据分析、web开发、机器学习、人工智能、面试题、Python学习路线图、问题解答! # 都放在这个扣群啦:279199867   代码展示 imp…

    Python开发 2023年4月2日
    00
  • Python统计文件中词出现的频率,非常简单,大神就不要点了

    兄弟们,今天咱们用Python来统计文件中词出现的频率。 你需要准备 Python pycharm 准备好的txt文件 知识点 文件读写 基础语法 字符串处理 循环遍历 代码展示 # 导入系统包 import platform # 我还给大家准备了这些资料:Python视频教程、100本Python电子书、基础、爬虫、数据分析、web开发、机器学习、人工智能…

    Python开发 2023年4月2日
    00
  • 用Python简单的绘制词云图,分析展示热点话题

    平常我们爬的评论、弹幕等等,数量又多又密,根本看不过来,这时候数据分析的作用来了,今天我们就试试用Python根据这些数据,来绘制词云图进行热词分析。 知识点 文件读写 基础语法 字符串处理 文件生成 数据构建 代码展示 # 导入系统包 import platform from flask import Flask, render_template from…

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