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 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对象的更多相关文章
- 用texarea存储数据,查询数据库后原样显示在jsp中,包括空格和回车换行
用texarea存储数据,查询数据库后原样显示在jsp中,包括空格和回车换行
- 数据库表转换成javaBean对象小工具
package test.utils; import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter; ...
- 数据库中的java.sql.Timestamp转换成Date
查询数据库中的时间类型为 java.sql.Timestamp 保存在json中需要格式化 自定义工具类 DateJsonValueProcessor package com.rom.util; i ...
- 浏览器给openresty连接发送参数请求,查询数据库,并返回json数据
nginx.conf配置文件 #user nobody; worker_processes 1; error_log logs/error.log; #error_log logs/error.log ...
- 在laravel中,使用DB查询数据库后,返回的对象,可以用下面的办法变为数组
$nodes = Db::table('account')->orderBy('sort', 'asc')->orderBy('id' ,'asc')->get()->map( ...
- sqlserver查询数据库中有多少个表,多少视图,多少存储过程,或其他对象
sql server 数表: select count(1) from sysobjects where xtype='U' 数视图: select count(1) from sysobjects ...
- ArcGIS Javascript查询数据库并添加到地图上
将数据存放到数据库中,动态的调取比较灵活,数据变动后不需要改变图层的属性表. 此处采用的方法是通过jquery查询数据库,并将数据库的结果生产json串返回给js,在js中动态解析json串增加点至地 ...
- spring3 hibernate4整合后无法查询数据库
spring3和hibernate4整合后无法查询数据库,一方面是因为已经spring3中没有对hibernate4 HibernateTemplate的支持,另外一个就是需要在hibernate的配 ...
- Python3.x使用PyMysql连接MySQL数据库
Python3.x使用PyMysql连接MySQL数据库 由于Python3.x不向前兼容,导致Python2.x中的很多库在Python3.x中无法使用,例如Mysqldb,我前几天写了一篇博客Py ...
随机推荐
- Tomcat绑定具体IP
https://blog.csdn.net/paomadeng/article/details/1826880
- django学习之- CSRF及中间件
CSRF # 表示django全局发送post请求均需要字符串验证功能:防止跨站请求伪造的功能工作原理:客户端访问服务器端,在服务器端正常返回给客户端数据的时候,而外返回给客户端一段字符串,等到客户端 ...
- Django学习之 - 基础部分
学习记录参考: 讲师博客:http://www.cnblogs.com/wupeiqi/articles/5433893.html 老男孩博客:http://oldboy.blog.51cto.com ...
- easyUI排序问题
使用easyUI时,需要在点击页面的某一列进行desc或asc排序,那么在jsp中可以把该列js的sortable 设置true. 加在某字段上时,该字段点击时页面会出现一小三角图案 ,此时easyU ...
- Python的环境变量设置
python安装完成后,它的配置很简单,只需要配置下环境变量就可以了. 具体来讲,就是将python的安装目录加入到系统的path中即可.
- Gerrit实现代码审计(code review)
1.Gerrit是个啥? 实现代码审计,比git(gitlab.github)多了代码审计的功能. 2.两类角色 角色1:我是代码编写者,只能写代码和提交给审计者代码,不能直接把代码合并到线上发布 角 ...
- linux 中断机制浅析
一.中断相关结构体 1.irq_desc中断描述符 struct irq_desc { #ifdef CONFIG_GENERIC_HARDIRQS_NO_DEPRECATED struct irq_ ...
- 微信小程序实战之 goods(订餐页)
项目目录: 模拟数据: utils / data.js function getSData() { var data = [ { "name": "热销榜", ...
- 初识mina框架
step1:创建java工程,导入jar包 step2:在src下配置log4j.properties文件 log4j.rootLogger=DEBUG,MINA,file log4j.appende ...
- PHP记录商品历史纪录
/* 记录浏览历史 */ if (!empty($_COOKIE['history'])) { if(stripos($_COOKIE['history'].',',$goods_id.',')=== ...