1. 程式人生 > 程式設計 >python 資料庫查詢返回list或tuple例項

python 資料庫查詢返回list或tuple例項

MySQLdb預設查詢結果都是返回tuple,輸出時候不是很方便,必須按照0,1這樣讀取,無意中在網上找到簡單的修改方法,就是傳遞一個cursors.DictCursor就行。

預設程式:

import MySQLdb
db = MySQLdb.connect(host='localhost',user='root',passwd='123456',db='test')
cur = db.cursor()
cur.execute('select * from user')
rs = cur.fetchall()
print rs
# 返回類似如下
# ((1000L,0L),(2000L,(3000L,0L))

修改後:

import MySQLdb
import MySQLdb.cursors
db = MySQLdb.connect(host='localhost',db='test',cursorclass=MySQLdb.cursors.DictCursor)
cur = db.cursor()
cur.execute('select * from user')
rs = cur.fetchall()
print rs
# 返回類似如下
# ({'age': 0L,'num': 1000L},{'age': 0L,'num': 2000L},'num': 3000L})

或者也可以用下面替換connect和cursor部分

db = MySQLdb.connect(host='localhost',db='test')
cur = db.cursor(cursorclass=MySQLdb.cursors.DictCursor)

我的實踐:

輸出為元組型別:

import pymysql
 
db = pymysql.connect("localhost","root","123456","filestore")
cursor = db.cursor()
sql='select * from tablelist where id>%s' %4
#查詢方法一
cursor.execute(sql)
result=cursor.fetchall()
print('result',result)
 
sql2='select * from tablelist where id>%s'
values=('4') # 此處為元組型別
#查詢方法二
cursor.execute(sql2,values)
result2=cursor.fetchall()
print('result2',result2)
id_list=[]
tablename_list=[]
tabletime_lsit=[]
cursor.execute('select * from tablelist where id>%s',[4,])
result3=cursor.fetchall()
print('type(result3)',type(result3))
#對((6,'engineeringdata20180901','1535731200'),)型別資料的提取
for i in range(len(result3)):
  id_list.append(result3[i][0])
  tablename_list.append(result3[i][1])
  tabletime_lsit.append(result3[i][2])
print(id_list)
print(tabletime_lsit)
print(tablename_list)
cursor.close()
db.close()
#輸出結果:
result ((6,(618,'engineeringdata20180904','1535990400'))
result2 ((6,'1535990400'))
type(result3) <class 'tuple'>
[6,618]
['1535731200','1535990400']
['engineeringdata20180901','engineeringdata20180904']

輸出為list型別:

list_id=[]
list_tablename=[]
list_tabletime=[]
list=get_list('select * from tablelist where id>%s',[4])
print('list:',list)
# 對[{'id': 6,'tablename': 'engineeringdata20180901','tabletime': '1535731200'},]型別資料的提取
for i in range(len(list)):
  print(list[i])
  list_id.append(list[i]['id'])
  list_tablename.append(list[i]['tablename'])
  list_tabletime.append(list[i]['tabletime'])
print('list_id:',list_id)
print('list_tabletime:',list_tabletime)
print('list_tablename:',list_tablename)
# 輸出結果為:
list: [{'id': 6,{'id': 618,'tablename': 'engineeringdata20180904','tabletime': '1535990400'}]
{'id': 6,'tabletime': '1535731200'}
{'id': 618,'tabletime': '1535990400'}
list_id: [6,618]
list_tabletime: ['1535731200','1535990400']
list_tablename: ['engineeringdata20180901','engineeringdata20180904']

補充知識:python下 將 pymysql 返回的元組資料轉換為列表

我就廢話不多說了,大家還是直接看程式碼吧!

from itertools import chain
...
sql="select elems from table"
cursor.execute(sql)
elems = cursor.fetchall()
resultlist = list(chain.from_iterable(elems))
...

以上這篇python 資料庫查詢返回list或tuple例項就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。