1. 程式人生 > >從mysql中拿到的數據構造為列表

從mysql中拿到的數據構造為列表

import return sql dac 轉換成 lis con without end

最近測試接口遇到一個問題,用python2.7從mysql中取到的數據是元祖類型的,元祖內部的元素也是一個元祖(並且部分元素的編碼格式是unicode的);

類似這樣:

((10144, u‘‘), (50016, u‘[10029,50042,10189,50044]‘), (10155, u‘[10048]‘), (10069, u‘[50030,10133]‘), (10029, u‘‘), (0, u‘‘), (10128, u‘‘), (10189, u‘[50041,50016,50043]‘), (50036, u‘‘), (0, u‘‘), (50017, u‘‘))

我的需求是把所有5位數的數字組成一個列表,數據處理的過程很有趣,記錄一下。

代碼實現:

# coding: utf-8
import pymysql
import re


#鏈接數據庫、執行SQL
def accountuser():
    # 創建一個連接對象,再使用創建遊標
    con = pymysql.connect(host=100.30.0.20, port=3306, user=user, passwd=M20000000, db=chip_service_sole,charset=utf8)
    cursor = con.cursor()

    # 執行SQL
    sql = select karAccount,authorizedAccount from device where appkey like "bmgfkakicb2et243usfbizdt45mp6utbtb3433il"
cursor.execute(sql) # 從遊標中取出所有記錄放到一個序列中並關閉遊標 result = cursor.fetchall() cursor.close() # 元祖類型result轉換成列表類型result result = list(result) return result # 去除列表中account為0的元素 def withoutzero(): result1 = accountuser() asd = (0, u‘‘) for i in result1:
if i == asd: f = result1.index(i) result1.pop(f) return result1 # 把列表轉換為str類型,並生成只包含所有account的字符串 def changstr(): result2 = str(withoutzero()) result2 = result2.strip([).strip(]) result2 = re.sub("[(u‘)]", ‘‘, result2) result2 = re.sub("[ []", ‘‘, result2) result2 = re.sub("[],]", ‘‘, result2) return result2 # 創建包含所有account的列表 def creatlist(): result3 = changstr() listnew = [] for i in range(len(result3) / 5): j = result3[:5] result3 = result3[5:] listnew.append(j) print listnew print len(listnew) # 主函數 def run(): result = accountuser() if len(result) > 0: creatlist() else: print "查詢到的account個數為0" if __name__ == __main__: run()

從mysql中拿到的數據構造為列表