环境:

win10

python3.6

selenium2.53.1

准备工作:先安装pymysql

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

pymysql安装:

方式一:通过pip执行安装

1.进入Scripts目录(E:\Program Files\Python36\Scripts)

2.运行指令pip install PyMySQL

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

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

2.将下载的内容解压到Lib\site-packages目录下(E:\Program Files\Python36\Lib\site-packages)

3.进入刚刚解压的文件pymysql(E:\Program Files\Python36\Lib\site-packages\pymysql)

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][] 获取字段里属性中的局部信息
row[index[i][]] = 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', '', '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方法默认会输出成这种格式"\u5377\u76ae\u6298\u6263",加ensure_ascii=False,则能够防止中文乱码。
# JSON采用完全独立于语言的文本格式,事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
# json.dumps()是将原始数据转为json(其中单引号会变为双引号),而json.loads()是将json转为原始数据。
jsondatar = json.dumps(result, ensure_ascii=False)
# 去除首尾的中括号
return jsondatar[1:len(jsondatar) - 1]

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

python3.6 + selenium2.53.1 查询数据库并将返回的内容中每一行的内容转换成class对象的更多相关文章

  1. 用texarea存储数据,查询数据库后原样显示在jsp中,包括空格和回车换行

    用texarea存储数据,查询数据库后原样显示在jsp中,包括空格和回车换行

  2. 数据库表转换成javaBean对象小工具

    package test.utils; import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter; ...

  3. 数据库中的java.sql.Timestamp转换成Date

    查询数据库中的时间类型为 java.sql.Timestamp 保存在json中需要格式化 自定义工具类  DateJsonValueProcessor package com.rom.util; i ...

  4. 浏览器给openresty连接发送参数请求,查询数据库,并返回json数据

    nginx.conf配置文件 #user nobody; worker_processes 1; error_log logs/error.log; #error_log logs/error.log ...

  5. 在laravel中,使用DB查询数据库后,返回的对象,可以用下面的办法变为数组

    $nodes = Db::table('account')->orderBy('sort', 'asc')->orderBy('id' ,'asc')->get()->map( ...

  6. sqlserver查询数据库中有多少个表,多少视图,多少存储过程,或其他对象

    sql server 数表: select count(1) from sysobjects where xtype='U' 数视图: select count(1) from sysobjects ...

  7. ArcGIS Javascript查询数据库并添加到地图上

    将数据存放到数据库中,动态的调取比较灵活,数据变动后不需要改变图层的属性表. 此处采用的方法是通过jquery查询数据库,并将数据库的结果生产json串返回给js,在js中动态解析json串增加点至地 ...

  8. spring3 hibernate4整合后无法查询数据库

    spring3和hibernate4整合后无法查询数据库,一方面是因为已经spring3中没有对hibernate4 HibernateTemplate的支持,另外一个就是需要在hibernate的配 ...

  9. Python3.x使用PyMysql连接MySQL数据库

    Python3.x使用PyMysql连接MySQL数据库 由于Python3.x不向前兼容,导致Python2.x中的很多库在Python3.x中无法使用,例如Mysqldb,我前几天写了一篇博客Py ...

随机推荐

  1. msp430入门编程40

    msp430中C语言的软件工程--前后台程序结构

  2. 洛谷——P3353 在你窗外闪耀的星星

    P3353 在你窗外闪耀的星星 题目描述 飞逝的的时光不会模糊我对你的记忆.难以相信从我第一次见到你以来已经过去了3年.我仍然还生动地记得,3年前,在美丽的集美中学,从我看到你微笑着走出教室,你将头向 ...

  3. 洛谷——P2872 [USACO07DEC]道路建设Building Roads

    P2872 [USACO07DEC]道路建设Building Roads 题目描述 Farmer John had just acquired several new farms! He wants ...

  4. 查看MySQL系统变量的命令

    用了好长时间mysql,却没有用心记住一些有用的东西,加油! mysql> SHOW VARIABLES; +---------------------------------+-------- ...

  5. 【python】Python的字典get方法:从字典中获取一个值

    转自: http://blog.sina.com.cn/s/blog_6be89284010183xm.html

  6. Linux-百度云之AccleriderMini使用

    打开命令行,然后输入: sudo apt-get install mono-devel 最后安装完成时,运行: 示例:mono xx.exe 实例:mono accleridaMini.exe 最后成 ...

  7. linux nginx service nginx restart [fail]

    命令:nginx -t 查看失败原因: nginx: [emerg] "fastcgi_pass" directive is duplicate in /etc/nginx/sit ...

  8. Effective C++学习笔记(Part Two:Item 5-12)

     近期最终把effectvie C++细致的阅读了一边,非常惊叹C++的威力与魅力.近期会把近期的读书心得与读书笔记记于此.必备查找使用,假设总结有什么不当之处,欢迎批评指正: 如今仅仅列出框架. ...

  9. 连接sql2008时报错

    最近把公司的项目搭建到本地(周末回家要加班),可是连接后,发现程序后台出错,错误信息:不支持此服务器版本.目标服务器必须是 SQL Server 2000 或更高版本. 本地是SqlServer200 ...

  10. CodeSmith连Oracle

    据说CodeSmith连Oracle特别麻烦,什么WIN7下不行,64位下不行.之前有个同事为了用上CodeSmith,还特地装了个XP虚拟机. 其实,还是那个连接串的问题. 操作系统64位,就要用6 ...