【Python】轉換mysql 結果集為詞典型別
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()
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22664653/viewspace-767271/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 巧用臨時表將大結果集轉換為小結果集驅動查詢薦
- long查詢結果轉換為varchar2型別型別
- iOS 時間轉換 datefromstring結果為niliOS
- go-sql-driver/mysql中Scan結果集轉自動換成map解決方案GoMySql
- MySQL in UnionAll結果集的優化MySql優化
- python 與 Mysql 資料型別轉換PythonMySQL 資料型別
- 評“MySQL 隱式轉換引起的執行結果錯誤”MySql
- MySQL EXPLAIN結果集分析 - 附帶大量案例MySqlAI
- iOS FMDB有返回結果集和無返回結果集iOS
- python操作字典型別的常用方法總結Python型別
- MySQL中如何橫向顯示結果集薦MySql
- Oracle 儲存過程返回結果集|轉|Oracle儲存過程
- Oracle 儲存過程返回結果集 (轉)Oracle儲存過程
- MySQL與oracle的資料型別轉換總結MySqlOracle資料型別
- Python連線資料庫將結果轉換為DataFrame(列名和表欄位一致)Python資料庫
- 【Mysql】iconv 轉換字符集MySql
- MySQL 隱式型別轉換MySql型別
- MySQL批量轉換表名為小寫(Python指令碼)MySqlPython指令碼
- 結果集 (ResultSet)全面解析
- 批次對比結果集
- 為 MySQL 的查詢結果新增排名欄位MySql
- 簡單的mysql儲存過程,輸出結果集MySql儲存過程
- MySQL型別轉換注意事項MySql型別
- C#中JSON字串和Dictionary字典型別的相互轉換C#JSON字串型別
- struts 結果型別型別
- MySQL修改字符集(mysqldump轉換全庫)MySql
- Oracle Long型別轉換為Clob型別Oracle型別
- python資料型別轉換Python資料型別
- python中的型別轉換Python型別
- MySQL把字串欄位轉換為日期型別進行比較MySql字串型別
- mysql返回一個結果集的儲存過程小例子MySql儲存過程
- PHP PDO獲取結果集PHP
- 結果集集合操作(待更新)
- 利用Python爬蟲過濾“掘金”的關鍵詞檢索結果Python爬蟲
- python技巧 python2中的除法結果為0Python
- Jive筆記4--結果集分頁處理 (轉)筆記
- 翻譯的誤區(一):不知道把名詞轉換為動詞
- 如何將三元組轉化為巢狀字典型別?巢狀型別