• 构造从MySQL获取的数据为列表(Python)


    最近测试接口遇到一个问题,用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()
  • 相关阅读:
    devexpress GridView按条件给行号上色
    简答正则表达式的使用
    devexpress 给GridView添加行号
    C# Winfrom 简单的运用Timer控件
    C# 简单TCP协议
    Lucene全文检索-从零开始(3)
    Lucene全文检索-从零开始(2)
    Lucene全文检索-从零开始(1)
    js 高级编程前三章
    莫名的胸闷
  • 原文地址:https://www.cnblogs.com/ailiailan/p/10516621.html
Copyright © 2020-2023  润新知