python 操作mysql数据中fetchone()和fetchall()方式


Posted in Python onMay 15, 2020

fetchone()

返回单个的元组,也就是一条记录(row),如果没有结果 则返回 None

fetchall()

返回多个元组,即返回多个记录(rows),如果没有结果 则返回 ()

需要注明:在MySQL中是NULL,而在Python中则是None

补充知识:python之cur.fetchall与cur.fetchone提取数据并统计处理

数据库中有一字段type_code,有中文类型和中文类型编码,现在对type_code字段的数据进行统计处理,编码对应的字典如下:

{'ys4ng35toofdviy9ce0pn1uxw2x7trjb':'娱乐',
  'vekgqjtw3ax20udsniycjv1hdsa7t4oz':'经济',
  'vjzy0fobzgxkcnlbrsduhp47f8pxcoaj':'军事',
  'uamwbfqlxo7bu0warx6vkhefigkhtoz3':'政治',
  'lyr1hbrnmg9qzvwuzlk5fas7v628jiqx':'文化',
 }

python 操作mysql数据中fetchone()和fetchall()方式

其中数据库的32位随机编码生成程序如下:

string.ascii_letters 对应字母(包括大小写), string.digits(对应数字) ,string.punctuation(对应特殊字符)

import string
import random
 
def get_code():
 return ''.join(random.sample(string.ascii_letters + string.digits + string.punctuation, 32))
print(get_code())
 
def get_code1():
 return ''.join(random.sample(string.ascii_letters + string.digits, 32))
testresult= get_code1()
print(testresult.lower())
print(type(testresult))

结果:

)@+t37/b|UQ[K;!spj<(>%r9"PokwTe=
igwle98kgqtcprke7byvq12xnhucmz4v
<class 'str'>

cur.fetchall:

import pymysql
import pandas as pd
 
conn = pymysql.Connect(host="127.0.0.1",port=3306,user="root",password="123456",charset="utf8",db="sql_prac")
 
cur = conn.cursor()
print("连接成功")
sql = "SELECT type_code,count(1) as num FROM test GROUP BY type_code ORDER BY num desc"
 
cur.execute(sql)
res = cur.fetchall()
print(res)

(('ys4ng35toofdviy9ce0pn1uxw2x7trjb', 8), ('vekgqjtw3ax20udsniycjv1hdsa7t4oz', 5), ('vjzy0fobzgxkcnlbrsduhp47f8pxcoaj', 3), ('uamwbfqlxo7bu0warx6vkhefigkhtoz3', 3), ('娱乐', 2), ('lyr1hbrnmg9qzvwuzlk5fas7v628jiqx', 1), ('政治', 1), ('经济', 1), ('军事', 1), ('文化', 1))

res = pd.DataFrame(list(res), columns=['name','value'])
print(res)

python 操作mysql数据中fetchone()和fetchall()方式

dicts = {'ys4ng35toofdviy9ce0pn1uxw2x7trjb':'娱乐',
  'vekgqjtw3ax20udsniycjv1hdsa7t4oz':'经济',
  'vjzy0fobzgxkcnlbrsduhp47f8pxcoaj':'军事',
  'uamwbfqlxo7bu0warx6vkhefigkhtoz3':'政治',
  'lyr1hbrnmg9qzvwuzlk5fas7v628jiqx':'文化',
  }
res['name'] = res['name'].map(lambda x:dicts[x] if x in dicts else x)
print(res)
name value
0 娱乐  8
1 经济  5
2 军事  3
3 政治  3
4 娱乐  2
5 文化  1
6 政治  1
7 经济  1
8 军事  1
9 文化  1
#分组统计
result = res.groupby(['name']).sum().reset_index()
print(result)
name value
0 军事  4
1 娱乐  10
2 政治  4
3 文化  2
4 经济  6

#排序
result = result.sort_values(['value'], ascending=False)

name value
1 娱乐  10
4 经济  6
0 军事  4
2 政治  4
3 文化  2
#输出为list,前端需要的数据格式
data_dict = result.to_dict(orient='records')
print(data_dict)

[{'name': '娱乐', 'value': 10}, {'name': '经济', 'value': 6}, {'name': '军事', 'value': 4}, {'name': '政治', 'value': 4}, {'name': '文化', 'value': 2}]

cur.fetchone

先测试SQL:

python 操作mysql数据中fetchone()和fetchall()方式

代码:

import pymysql
import pandas as pd
 
conn = pymysql.Connect(host="127.0.0.1",port=3306,user="root",password="123456",charset="utf8",db="sql_prac")
 
cur = conn.cursor()
print("连接成功")
sql = "select count(case when type_code in ('ys4ng35toofdviy9ce0pn1uxw2x7trjb','娱乐') then 1 end) 娱乐," \
  "count(case when type_code in ('vekgqjtw3ax20udsniycjv1hdsa7t4oz','经济') then 1 end) 经济," \
  "count(case when type_code in ('vjzy0fobzgxkcnlbrsduhp47f8pxcoaj','军事') then 1 end) 军事," \
  "count(case when type_code in ('uamwbfqlxo7bu0warx6vkhefigkhtoz3' ,'政治') then 1 end) 政治," \
  "count(case when type_code in ('lyr1hbrnmg9qzvwuzlk5fas7v628jiqx','文化') then 1 end) 文化 from test"
cur.execute(sql)
res = cur.fetchone()
print(res)

返回结果为元组:

(10, 6, 4, 4, 2)

data = [
    {"name": "娱乐", "value": res[0]},
    {"name": "经济", "value": res[1]},
    {"name": "军事", "value": res[2]},
    {"name": "政治", "value": res[3]},
    {"name": "文化", "value": res[4]}
]
result = sorted(data, key=lambda x: x['value'], reverse=True)
print(result)

结果和 cur.fetchall返回的结果经过处理后,结果是一样的:

[{'name': '娱乐', 'value': 10}, {'name': '经济', 'value': 6}, {'name': '军事', 'value': 4}, {'name': '政治', 'value': 4}, {'name': '文化', 'value': 2}]

以上这篇python 操作mysql数据中fetchone()和fetchall()方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python群发邮件实例代码
Jan 03 Python
python实现用户登陆邮件通知的方法
Jul 09 Python
python实现下载指定网址所有图片的方法
Aug 08 Python
Python使用sort和class实现的多级排序功能示例
Aug 15 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
Oct 15 Python
python远程调用rpc模块xmlrpclib的方法
Jan 11 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
Apr 04 Python
python与mysql数据库交互的实现
Jan 06 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
Feb 17 Python
Python RabbitMQ实现简单的进程间通信示例
Jul 02 Python
Django启动时找不到mysqlclient问题解决方案
Nov 11 Python
用python读取xlsx文件
Dec 17 Python
Python实现UDP程序通信过程图解
May 15 #Python
解决pymysql cursor.fetchall() 获取不到数据的问题
May 15 #Python
python如何解析复杂sql,实现数据库和表的提取的实例剖析
May 15 #Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
May 15 #Python
django 利用Q对象与F对象进行查询的实现
May 15 #Python
Python实现电视里的5毛特效实例代码详解
May 15 #Python
python中wx模块的具体使用方法
May 15 #Python
You might like
与空气斗智斗勇的经典《Overlord》,传说中的“无稽之谈”
2020/04/09 日漫
php使用ICQ网关发送手机短信
2013/10/30 PHP
laravel5实现微信第三方登录功能
2018/12/06 PHP
定义select的边框颜色
2008/04/28 Javascript
javascript Excel操作知识点
2009/04/24 Javascript
jquery 图片截取工具jquery.imagecropper.js
2010/04/09 Javascript
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
2013/11/08 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
2013/12/30 Javascript
JavaScript每天定时更换皮肤样式的方法
2015/07/01 Javascript
学习JavaScript设计模式之状态模式
2016/01/08 Javascript
Bootstrap列表组学习使用
2017/02/09 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
Vue-input框checkbox强制刷新问题
2019/04/18 Javascript
在Vue项目中,防止页面被缩放和放大示例
2019/10/28 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
基于javascript实现放大镜特效
2020/12/03 Javascript
[22:07]DOTA2-DPC中国联赛 正赛 iG vs Magma 选手采访
2021/03/11 DOTA
Python实现全角半角字符互转的方法
2016/11/28 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
Python面向对象之反射/自省机制实例分析
2018/08/24 Python
python使用百度文字识别功能方法详解
2019/07/23 Python
python 三元运算符使用解析
2019/09/16 Python
python 通过文件夹导入包的操作
2020/06/01 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
基于python获取本地时间并转换时间戳和日期格式
2020/10/27 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
金融专业个人求职信范文
2013/11/28 职场文书
爱祖国演讲稿
2014/05/04 职场文书
公司委托书范本5篇
2014/09/20 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2015年监理个人工作总结
2015/05/23 职场文书
学生会干部任命书
2015/09/21 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
Redis IP地址的绑定的实现
2021/05/08 Redis