zoukankan      html  css  js  c++  java
  • python3.6 + selenium2.53.1 查询数据库并将返回的内容中每一行的内容转换成class对象

    环境:

    win10

    python3.6

    selenium2.53.1

    准备工作:先安装pymysql

    python2.x链接数据库使用MySQLdb,而python3.x链接数据库使用pymysql

    pymysql安装:

    方式一:通过pip执行安装

    1.进入Scripts目录(E:Program FilesPython36Scripts)

    2.运行指令pip install PyMySQL

    方式二:下载解压包进行安装

    1.进入:https://github.com/PyMySQL/PyMySQL,进行下载

    2.将下载的内容解压到Libsite-packages目录下(E:Program FilesPython36Libsite-packages)

    3.进入刚刚解压的文件pymysql(E:Program FilesPython36Libsite-packagespymysql)

    4.运行指令安装:python setup.py install

    实现步骤:

    1.创建数据库连接:host为数据库所在位置、port为数据库端口,user为登陆用户名、passwd为登陆者的密码、db为表名、charset:指定数据库格式比如:utf8(charset可以不写)

    def connects(self, host, port, user, passwd, db, charset):
            # 链接数据库,定义账号密码以及用户名
            self.connect = pymysql.Connect(
                host=host,
                port=port,
                user=user,
                passwd=passwd,
                db=db,
                charset=charset
            )

    2.创建游标

    def cureors(self):
            # 通过连接数据来获取游标
            self.cursor = self.connect.cursor()

    3.根据查询语句返回查询结果并按照json格式返回

        def selects(self, sql=None):
            print("返回字典")
            try:
                self.cursor.execute(sql)
    
                # 好像是打印字段的属性
                index = self.cursor.description
    
                result = []
    
                # fetchall():接收全部的返回结果行.
                for res in self.cursor.fetchall():
    
                    row = {}
    
                    # range(x):表示从0到x,不包括x
                    # len:返回字符串、列表、字典、元组等长度
                    for i in range(len(index)):
                        # index[i][0] 获取字段里属性中的局部信息
                        row[index[i][0]] = res[i]
                    result.append(row)
                    # print("selects_list %s" % row)
                return result;
            except:
                print('MySQL connect fail...')

    4.关闭链接不能忘记

        def closes(self):
            # 关闭游标
            self.cursor.close()
            # 关闭库链接
            self.connect.close()

    5.开始链接

    if __name__ == '__main__':
        pm = pymysqls.__new__(pymysqls)
        pm.connects_cureors('load', 3306, 'root', '123456', 'table', 'utf8')
        sql = "----';"
        result = pm.selects(sql)
        pm.closes()
        data_list = pm.obj_test(result, user_class())

    6.关闭的指令不能忘记

        def closes(self):
            # 关闭游标
            self.cursor.close()
            # 关闭库链接
            self.connect.close()

    7.将查询之后的结果result转换成类对象

    7.1先创建一个字典data_list用于保存全部对象

    7.2for遍历result的数据同时创建class对象test

    7.3创建一个列表dictionaries来存储test,但是要提现键值对的关系,用于区分唯一性

    7.4调用命令执行转换语句

    7.5通过类对象的id来最为键,整个类对象作为值

    7.6最后将列表添加到字典中并进行返回

    def obj_test(self, result,obj):
            data_list = []
            for res in result:
                test = obj
                dictionaries = {}
                jsondatar = json.dumps(res, ensure_ascii=False)
                rebuild = json.loads(jsondatar)
                test.__dict__ = rebuild
                dictionaries[test.id] = test
                data_list.append(dictionaries)
            return data_list;

    整体步骤分析;:

    1.链接数据库

    2.创建游标

    3.将查询的结果通过json格式进行保存(一般使用字典和列表)

    附加动作:

    将json转换成string格式

    def json_str_dumps(self, result):
            # 使用json.dumps将数据转换为json格式,json.dumps方法默认会输出成这种格式"u5377u76aeu6298u6263",加ensure_ascii=False,则能够防止中文乱码。
            # JSON采用完全独立于语言的文本格式,事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
            # json.dumps()是将原始数据转为json(其中单引号会变为双引号),而json.loads()是将json转为原始数据。
            jsondatar = json.dumps(result, ensure_ascii=False)
            # 去除首尾的中括号
            return jsondatar[1:len(jsondatar) - 1]

     写的不好请勿喷。谢谢。。。

  • 相关阅读:
    神马搜索 面试小结
    我的第一篇paper
    【转载】技巧:Vim 的纵向编辑模式
    实习求职小结
    将博客园界面打造成Hexo经典主题Light
    试一下Markdown
    四色标记算法
    射雕三部曲的优美片段
    Docker
    Sublime Text 3 文档
  • 原文地址:https://www.cnblogs.com/xiaodingdong/p/7742529.html
Copyright © 2011-2022 走看看