【Python】转换mysql 结果集为词典类型

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: Python的MySQLdb模块是Python连接MySQL的一个模块,使用MySQLdb 模块获取mysql中的记录,默认查询结果返回是tuple类型,只能通过0,1等索引下标访问数据。
Python的MySQLdb模块是Python连接MySQL的一个模块,
使用MySQLdb 模块获取mysql中的记录,默认查询结果返回是tuple类型,只能通过0,1等索引下标访问数据。
默认的连接方式:
conn = MySQLdb.connect(host=dbconn.DB_HOST,port=int(dbconn.DB_PORT),user=dbconn.DB_USER,passwd=dbconn.DB_PASS, charset='utf8')
root@alsdb_admin1b # python dict.py 
the type of res1 is :  
(u'Com_delete', u'6491620')
----------------------------------------
使用 
import MySQLdb.cursors
在conn 中加上 cursorclass = MySQLdb.cursors.DictCursor
conn = MySQLdb.connect(host=dbconn.DB_HOST,port=int(dbconn.DB_PORT),user=dbconn.DB_USER,passwd=dbconn.DB_PASS, charset='utf8', cursorclass = MySQLdb.cursors.DictCursor)
返回的结果集仍然是 tuple 类型但是 结果机里面的值已经变为词典类型了,但是这样并不能解决问题
the type of res2 is :  
{'Value': u'6491620', 'Variable_name': u'Com_delete'}
----------------------------------------
使用 dict(result) 将结果集转换为词典,得到如下结果:
the type of mystat2 is :  
{u'Com_delete': u'6491620'}
这样可以直接使用mystat2['Com_delete'] 来调用对应的vlaue
dict.py的代码:
#!/usr/bin/env python
#coding=utf-8
import time
import sys
import MySQLdb
import dbconn
import MySQLdb.cursors
def now() :
        #return str('2011-01-31 00:00:00')
        return str( time.strftime( '%Y-%m-%d %H:%M:%S' , time.localtime() ) )
def log( qps,tps , logs ) :
        f = file( logs , 'a' , 0 )
        f.write( now() + '  ' + str(qps) +'  '+ str(tps) + '\n' )
        f.close()
def main() :
    try: 
      conn = MySQLdb.connect(host=dbconn.DB_HOST,port=int(dbconn.DB_PORT),user=dbconn.DB_USER,passwd=dbconn.DB_PASS, charset='utf8')
    except  MySQLdb.ERROR,e:
      print "Error %d:%s"%(e.args[0],e.args[1])
      exit(1)
    conn.autocommit(True)
    cursor=conn.cursor()
    mystat1={}
    sql = "show global status where Variable_name in ('Com_delete');"
    cursor.execute(sql)
    res1 = cursor.fetchall()
    for row in res1: 
        print "the type of res1 is : ", type(row)
        print row
    conn.close()
    print "----------------------------------------\n" 
    try:
      conn = MySQLdb.connect(host=dbconn.DB_HOST,port=int(dbconn.DB_PORT),user=dbconn.DB_USER,passwd=dbconn.DB_PASS, charset='utf8',cursorclass = MySQLdb.cursors.DictCursor)
    except  MySQLdb.ERROR,e:
      print "Error %d:%s"%(e.args[0],e.args[1])
      exit(1)

    conn.autocommit(True)
    cursor=conn.cursor()
    mystat2={}
    cursor.execute(sql)
    res2 = cursor.fetchall()
    #mystat2=dict(res2)
    for row in res2:
        print "the type of res2 is : ", type(res2)
        print row  
    conn.close()
    print "----------------------------------------\n"
    try:
      conn = MySQLdb.connect(host=dbconn.DB_HOST,port=int(dbconn.DB_PORT),user=dbconn.DB_USER,passwd=dbconn.DB_PASS, charset='utf8')
    except  MySQLdb.ERROR,e:
      print "Error %d:%s"%(e.args[0],e.args[1])
      exit(1)
    conn.autocommit(True)
    cursor=conn.cursor()
    mystat2={}
    cursor.execute(sql)
    res2 = cursor.fetchall()
    mystat2=dict(res2)
    print "the type of mystat2 is : ", type(mystat2)
    print mystat2
    conn.close()
if __name__ == '__main__':
   main()
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
Python怎么操作Mysql数据库
Python怎么操作Mysql数据库
88 0
|
6月前
|
SQL 关系型数据库 MySQL
python如何操作mysql数据库
python如何操作mysql数据库
54 0
|
5月前
|
SQL 关系型数据库 MySQL
Python 操作 MySQL 数据库
Python 操作 MySQL 数据库
|
6月前
|
SQL 关系型数据库 MySQL
Python 操作 MySQL 数据库
Python 操作 MySQL 数据库
|
SQL 关系型数据库 MySQL
[Python]使用Python操作MySQL数据库(pymysql)
[Python]使用Python操作MySQL数据库(pymysql)
|
SQL 关系型数据库 MySQL
如何使用python操作MySQL数据库
如何使用python操作MySQL数据库
1401 0
|
关系型数据库 MySQL 数据库
python的ORM技术:使用sqlalchemy操作mysql数据库
#!/usr/bin/env python # -*- coding: utf-8 -*- from sqlalchemy import Column, String, create_engine, Integer, Date, Float, ForeignKey from sqlalchemy.
1166 0
|
SQL 存储 关系型数据库
通过cursor游标讲解,带你彻底搞懂python操作mysql数据库
通过cursor游标讲解,带你彻底搞懂python操作mysql数据库
通过cursor游标讲解,带你彻底搞懂python操作mysql数据库
|
SQL 关系型数据库 MySQL
python 操作MySQL数据库
python 操作MySQL数据库
302 0
python 操作MySQL数据库
|
关系型数据库 MySQL 数据库
Python - 操作 MySQL 数据库(下)
Python - 操作 MySQL 数据库(下)
133 0