环境:

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. hihocoder 1873 ACM-ICPC北京赛区2018重现赛 D Frog and Portal

    http://hihocoder.com/problemset/problem/1873 时间限制:1000ms 单点时限:1000ms 内存限制:512MB 描述 A small frog want ...

  2. Wooden Sticks---hdu1051(最长上升子序列)

    http://acm.hdu.edu.cn/showproblem.php?pid=1051 Problem Description There is a pile of n wooden stick ...

  3. Triangle(dp)

    Given a triangle, find the minimum path sum from top to bottom. Each step you may move to adjacent n ...

  4. foobar2000 iOS使用,并连接PC的歌曲进行播放

    foobar2000移动版下载地址:http://mobile.foobar2000.com/ 要实现歌曲互通有两种方法,使用iOS客户端的FTP Server用PC上传歌曲到iOS手机,和在PC上使 ...

  5. 【.Net Core 学习系列】-- 自定义错误页面在IE浏览器中不能正常显示

    测试场景: 1. 新建.Net Core Web项目 2. 选择模板: 3. 修改Error页面代码:(去掉母版页并修改页面显示信息) 4. 修改[ASPNETCORE_ENVIRONMENT],并抛 ...

  6. oracle 重要函数

    1)instr()函数的格式 (俗称:字符查找函数) 格式一:instr( string1, string2 ) / instr(源字符串, 目标字符串) 格式二:instr( string1, st ...

  7. 【转】SQL中的取整函数FLOOR、ROUND、CEIL、TRUNC、SIGN

    --------------------------------------------------------------------------1 trunc(value,precision)按精 ...

  8. string 是值类型,还是引用类型(.net)[转]

    转自http://hi.baidu.com/newfzks/item/b805f0f4edb0810dd89e7290 string 是值类型,还是引用类型(.net) 一. string 类型的用法 ...

  9. Spring中注解

    @Autowired :spring注解 @Resource :J2EE注解 @Transactional(rollbackFor=Exception.class):指定回滚 @RequestMapp ...

  10. ubuntu hadoop伪分布式部署

    环境 ubuntu hadoop2.8.1 java1.8 1.配置java1.8 2.配置ssh免密登录 3.hadoop配置 环境变量 配置hadoop环境文件hadoop-env.sh core ...