环境

Anaconda3 Python 3.6, Window 64bit

  • 目的

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

  • 代码
# -*- coding: utf-8 -*-

"""
Author: kimbo zhang
Mail: kimbo_zhang@163.com
""" import pymysql
import pandas as pd
import numpy as np db_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_test
data2 = 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 rn
# FROM kimbo_test t
# )
# WHERE rn < 3
# ORDER BY rn;
rn = data1.assign(rn=data1.sort_values(['coll_amt'], ascending=False).groupby('coll_type').cumcount() + 1
).query('rn < 3').sort_values(['coll_type', 'rn'])
print("row_number 分析函数结果:")
print(rn)
  • 结果展示

第一个和最后一个结果:

Python SQL相关操作的更多相关文章

  1. python文件相关操作

    Python文件相关操作 打开文件 打开文件,采用open方法,会将文件的句柄返回,如下: f = open('test_file.txt','r',encoding='utf-8') 在上面的代码中 ...

  2. python 集合相关操作

    集合相关操作 集合是一个无序的,不重复的数据组合,它有着两个主要作用:去重以及关系测试. 去重指的是当把一个列表变成了集合,其中重复的内容就自动的被去掉了 关系测试指的是,测试两组数据之间的交集.差集 ...

  3. python集合相关操作

    集合相关操作 集合是一个无序的,不重复的数据组合,它有着两个主要作用:去重以及关系测试. 去重指的是当把一个列表变成了集合,其中重复的内容就自动的被去掉了 关系测试指的是,测试两组数据之间的交集.差集 ...

  4. python PIL相关操作

    项目中需要用python生成二维码,这里记录一下相关PIL相关操作. RGBA问题: 需要将图片A粘贴到图片B上,之前没有注意透明度问题,A的背景是透明的,粘贴到B上后,A的周围是黑的.后来才发现是P ...

  5. Python容器相关操作

    (集合与字典除外)的容器相关操作 (1)容器的拼接 >>> 'abc' + 'def' 'abcdef' (2)容器的重复 >>> (1, 2) * 3 (1, 2 ...

  6. python subprocess相关操作

    python subprocess常用操作 1.subprocess模块的常用函数 函数 描述 subprocess.run() Python 3.5中新增的函数.执行指定的命令,等待命令执行完成后返 ...

  7. python selenium 相关操作

    selenium : 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Fi ...

  8. 初学Python——字符串相关操作

    基本字符串操作 Pyhton中字符串的格式化输出在前面已经总结了,接下来介绍一些常用的字符串操作 先定义一个字符变量,以下的操作都以此为例: name=" my name is china ...

  9. python 字典相关操作

    字典 字典的增删改查 字典的创建方式: # 创建字典类型 info = { 'name':'李白', 'age':'25', 'sex':'男' } msg = { 'user01':'Longzel ...

随机推荐

  1. attributes["wv"].nodeValue

    w 获取自定义属性的值 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  2. vc判断当前用户是否具有administrator 权限代码

    BOOL IsAdmin() { HANDLE hAccessToken; BYTE * InfoBuffer = ]; PTOKEN_GROUPS ptgGroups; DWORD dwInfoBu ...

  3. 正则表达式 \b

    引用网上一段话: \b 是正则表达式规定的一个特殊代码(好吧,某些人叫它元字符,metacharacter),代表着单词的开头或结尾,也就是单词的分界处.虽然通常英文的单词是由空格,标点符号或者换行来 ...

  4. Python高级教程-迭代

    Python中的迭代 如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration). 在Python中,迭代是通过for...in ...

  5. oracle入门(1)——安装oracle 11g x64 for windows

    [本文简介] 最近因为一个项目的需要,从零学习起了oracle,现在把学到的东西记录分享一下. 首先是安装篇,在win8 装10G 一直失败,网上各种方法都试过了,最后不得不放弃,选择了11G. 11 ...

  6. redis的安装与配置(一)

    1. 介绍 Redis is an open source (BSD licensed), in-memory data structure store, used as database, cach ...

  7. [TensorFlow] tf.nn.softmax_cross_entropy_with_logits的用法

    在计算loss的时候,最常见的一句话就是tf.nn.softmax_cross_entropy_with_logits,那么它到底是怎么做的呢? 首先明确一点,loss是代价值,也就是我们要最小化的值 ...

  8. vue项目如何打包扔向服务器

    vue项目如何打包扔向服务器   当我们将 vue 项目完成后,面临的就是如何将项目进行打包上线,放到服务器中.我使用的是 vue-cli(simple) 脚手架,所以就讲一下如何将项目进行打包,并放 ...

  9. sersync的confxml.xml文件详解

    <?xml version="1.0" encoding="ISO-8859-1"?> <head version="2.5&quo ...

  10. Rest_framework-2

    一 版本 二 解析器 三 序列化 四 请求数据验证 一 版本 作用:应用程序的更新迭代(丰富或添加功能),可以通过版本来实现. 1 .没用rest_framework之前,我们可以通过以下方式来获取 ...