当前位置: 首页 >数据库 > Python SQL相关操作

Python SQL相关操作

环境

Anaconda3 Python 3.6, Window 64bit

  • 目的

从MySQL数据库读取数据,进行数据查询、关联

  • 代码
Python SQL相关操作 _ JavaClub全栈架构师技术笔记
# -*- coding: utf-8 -*-"""Author: kimbo zhangMail: kimbo_zhang@163.com"""import pymysqlimport pandas as pdimport numpy as npdb_conn = pymysql.connect(host="***",user="kimbo",passwd="***",port=3306,database="kimbo_test",charset="utf8")# 执行sql语句sql_cmd = "select id,coll_type,coll_amt,coll_cost from kimbo_test;"sql_cmd2 = "select id,re_type as coll_type,re_amt as coll_amt,re_cost as coll_cost from kimbo_test2;"# 导入数据data1 = pd.read_sql(sql_cmd, db_conn)  # 赋值 kimbo_testdata2 = pd.read_sql(sql_cmd2, db_conn)  # 赋值 kimbo_test2# 1. select 查询# eg: select * from kimbo_test limit 5;sl = data1.head(10)print("查询前10条记录:\n")print(sl)print("\n-------------->\n")# 2. 查询类型是:偏低的数据# eg: select * from kimbo_test where coll_type='偏低';wh = data1[(data1['coll_type'] == '偏低')]print(wh)# 3. 查询类型是:偏低和昂贵的数据# eg:select * from kimbo_test where coll_type in ('偏低','昂贵');wh2 = data1[(data1['coll_type'] == '偏低') | (data1['coll_type'] == '昂贵')]print(wh2)# 4. 查询类型是:偏低和昂贵,id 大于7000# eg: select * from kimbo_test where coll_type in ('偏低','昂贵') and id >5000;wh3 = data1[((data1['coll_type'] == '偏低') | (data1['coll_type'] == '昂贵')) & (data1['id'] > 5000)]print(wh3)# 5. 分组、汇总# eg: select coll_type,sum(coll_amt)as coll_amt,sum(coll_cost)as coll_cost from kimbo_test group by coll_type;gb = data1.groupby('coll_type').agg({'coll_amt': np.sum, 'coll_cost': np.sum})print(gb)# 5. 关联 inner join# eg: select * from kimbo_test a inner join kimbo_test2 b on a.id=b.id ;jn = pd.merge(data1, data2, on='id')print(jn)# 6. 关联 left join# eg: select * from kimbo_test a left join kimbo_test2 b on a.id=b.id ;jn2 = pd.merge(data1, data1, on='id', how='left')print(jn2)# 7. 关联 full join# eg: select * from kimbo_test a full join kimbo_test2 b on a.id=b.id ;jn3 = pd.merge(data1, data1, on='id', how='outer')print(jn3)# 8. 合并 union all ,列名需要一致# eg select * from kimbo_test a union all select * from kimbo_test2 b ;un2 = pd.concat([data1, data2])print(un2)# 9. 分析函数# eg:# SELECT * FROM (# SELECT# t.*,# ROW_NUMBER() OVER(PARTITION BY coll_type ORDER BY coll_amt DESC) AS # FROM kimbo_test t# )# WHERE  < 3# ORDER BY ; = data1.assign(=data1.sort_values(['coll_amt'], ascending=False).groupby('coll_type').cumcount() + 1  ).query(' < 3').sort_values(['coll_type', ''])print("row_number 分析函数结果:")print()
View Code

 

  • 结果展示

第一个和最后一个结果:

Python SQL相关操作 _ JavaClub全栈架构师技术笔记

 

作者:Kimbo
来源链接:https://www.cnblogs.com/kimbo/p/6596562.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。





本文链接:https://www.javaclub.cn/database/117860.html

标签:group by
分享给朋友:

“Python SQL相关操作” 的相关文章

触发器的定义及优点 2022年05月21日 11:37:15
Oracle SQL 2022年06月05日 03:43:59
MySQL 查询指定时间范围内的数据 2022年06月06日 16:59:25
mysql 查询表 所有字段 2022年06月09日 20:38:57
mysql 查询操作日志 2022年06月10日 21:58:42
mysql 查询数据结果计算百分比 2022年06月11日 10:01:40