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 相关文章推荐
利用打码兔和超人打码自封装的打码类分享
Mar 16 Python
Django 导出 Excel 代码的实例详解
Aug 11 Python
用TensorFlow实现多类支持向量机的示例代码
Apr 28 Python
解决python中使用plot画图,图不显示的问题
Jul 04 Python
python实现录音小程序
Oct 26 Python
Python Opencv实现图像轮廓识别功能
Mar 23 Python
python Django编写接口并用Jmeter测试的方法
Jul 31 Python
Python使用matplotlib绘制圆形代码实例
May 27 Python
python 识别登录验证码图片功能的实现代码(完整代码)
Jul 03 Python
Python实例方法、类方法、静态方法区别详解
Sep 05 Python
Python 字典一个键对应多个值的方法
Sep 29 Python
详解Python为什么不用设计模式
Jun 24 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
php学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
thinkphp实现图片上传功能
2016/01/13 PHP
解决微信授权回调页面域名只能设置一个的问题
2016/12/11 PHP
封装的原生javascript弹出层代码
2010/09/24 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
javascript实现点击后变换按钮显示文字的方法
2015/05/13 Javascript
jQuery原理系列-常用Dom操作详解
2016/06/07 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
微信小程序 css使用技巧总结
2017/01/09 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
jQuery实现鼠标跟随效果
2017/02/20 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
为输入框加入数字js校验代码分享
2017/11/02 Javascript
解决 window.onload 被覆盖的问题方法
2020/01/14 Javascript
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
[01:23:45]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第一场 1月22日
2021/03/11 DOTA
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
神经网络(BP)算法Python实现及应用
2018/04/16 Python
Python的argparse库使用详解
2018/10/09 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
docker django无法访问redis容器的解决方法
2019/08/21 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
总结python 三种常见的内存泄漏场景
2020/11/20 Python
解决python3输入的坑——input()
2020/12/05 Python
CSS3实现的闪烁跳跃进度条示例(附源码)
2013/08/19 HTML / CSS
canvas学习和滤镜实现代码
2018/08/22 HTML / CSS
升职自荐信
2013/11/28 职场文书
高二地理教学反思
2014/01/24 职场文书
手机银行营销方案
2014/03/14 职场文书
企业标语口号
2014/06/10 职场文书
授权委托书(公民个人适用)
2014/09/19 职场文书
财务经理岗位职责
2015/01/31 职场文书
小学英语教学随笔
2015/08/14 职场文书