【Python】转换mysql 结果集为词典类型-阿里云开发者社区

开发者社区> yangyi_dba> 正文

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

简介: 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()

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
基于Python的mysql与excel互相转换
1.mysql转为excel getConn函数获取mysql连接,第1个参数database为要连接的数据库。 mysql2excel函数完成主要转换功能,第1个参数database为要连接的数据库,第2个参数为要转换的数据表,第3个参数为要保存的excel文件名。
1470 0
MySQL---数据库从入门走向大神系列(十一)-Java获取数据库/结果集的元信息、将数据表写入excel表格
数据库的元信息: 首先介绍一下数据库的元信息(元数据): 元数据(Metadata)是关于数据的数据。 元数据是描述数据仓库内数据的结构和建立方法的数据。 存储的数据是什么类型,什么驱动等等,这些描述数据的数据,就是元数据! 准备: package cn.
1295 0
python把str转换为int
1 def str2int(s): 2 def fn(x,y): 3 return x+y 4 def char2num(s): 5 return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7'...
777 0
python3中bytes与string的互相转换
首先来设置一个原始的字符串, Python 3.2.3 (default, Apr 11 2012, 07:15:24) [MSC v.1500 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information.
712 0
MySQL和Oracle中的隐式转换
今天在处理一个问题的时候,需要根据其他部门提供的sql语句对一个表中的数据进行了筛查。 语句类似下面的形式 > SELECT MAX_LEVEL,LOGOUT_TIME,CURRENT_DATE AS NOWTIME,cn_master FROM t_tes...
953 0
+关注
yangyi_dba
数据库相关技术专家
972
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载