從mysql中拿到的數據構造為列表
阿新 • • 發佈:2019-03-12
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中拿到的數據構造為列表