python_json与pymsql模块

一。json

1.初识json

json:全称(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。

 

辨认是否是json:类似与python中的dict

1)通过在线json格式校验,判断是否是json

python_json与pymsql模块

 

 

 

 

2.json类型转换

1)json数据格式与python某些模块不一致:

python --->   json

None --->null

True --->true

False --->false

 

2)python中json数据转换

1.引用

import json

把json的str数据转换为python字典:loads()

json_str=‘{"mobile_phone":true,"password":null}‘
print(json.loads(json_str))
运行结果:

python_json与pymsql模块

 

 

 把python中的dict转换为json:dumps()

python_dict={‘mobile_phone‘: None, ‘password‘: False}
print(json.dumps(python_dict))
运行结果:

python_json与pymsql模块

 

 

 使用场景探讨:

1)excel:若把接口请求数据放在xlsx后缀文件中,读取的数据为str格式,无法直接作为参数进行传递 使用python中的eval()可以拿到数据本来的格式,但是数据若为json格式(null,true,false)命名规则就会报错。如图:

python_eval=‘{"mobile_phone":true,"password":null}‘
print(eval(python_eval))
运行结果:

python_json与pymsql模块

 

 

 

 

 

二。pymysql

1.安装

pip install pymysql

2.引用

import pymysql

3.使用

1)建立连接conn=pymysql.connect(

    host="",#连接地址
port=3306,#端口号
user="",#连接名字
password="",#密码
charset="utf8",#数据格式
cursorclass=DictCursor #返回数据格式为dict
)

 

 

2)建立游标

cursor=conn.cursor()
print(cursor)
运行结果:

python_json与pymsql模块

 

 

3)执行sql

sql_data="select * from futureloan.member limit 5;"
cursor.execute(query=sql_data)

4)返回数据

#获取数据,获取满足条件的一条数据
print(cursor.fetchone())
运行结果:

python_json与pymsql模块

 

 

#获取满足条件的所有数据
print(cursor.fetchall())
运行结果:

python_json与pymsql模块

 

 

5)关闭连接

#关闭游标
cursor.close()
#关闭连接
conn.close()

6)注意
1 -- >一个游标只能执行一个sql语句,若需要执行多个sql语句 就多建立几个游标(游标1,游标2...)。
2 -->游标使用完毕后记着关闭游标,获取一次数据后 不关闭游标再次获取数据,就会从第一次获取的结果出开始获取数据,例子:
#把满足条件的数据全部获取
print(cursor.fetchall())
#获取全部数据后,不关闭游标继续获取单条数据,此时返回为None
print(cursor.fetchone())
运行结果:

python_json与pymsql模块

 

 3 -->执行完数据库操作(如 插入,更新删除后)最好是关闭游标和关闭连接后,重新建立连接,创建游标进行搜索。

 

 

 

4.与random库联合使用,生成数据库中没有的数据

 1)random

random.choice([‘11‘,‘xx‘,‘jj‘]) -->从‘11’,‘xx‘,‘jj‘中随机获取一个数值

random.sample(‘12345‘,4)  -->从‘12345‘中输出一个4位随机组合的数值

思考:

随机生成的数据数据库中有时候也是存在的,如果有次情况的话还是需要继续生成数据的,问题来了怎么再生成数据 再生成的数据怎么知道数据库中存不存在?若不存在怎么为自己所用?怎么作用与测试用例中?

 

解决:

1.首先考虑while True,使用外循环不断进行数据生成,顺便也可以进行数据库比对,若不存在数据库的话返回该数据,使用break进行终止请求

while True:
phone_headler = random.choice([‘13‘, ‘15‘, ‘18‘])
phone_w = "".join(random.sample(‘0123456789‘, 9))
phone=phone_headler+phone_w
#print(phone)
if not cursor.execute(query="select * from futureloan.member where mobile_phone={};".format(phone)):
print(phone)
cursor.close()
break
运行结果:

python_json与pymsql模块

 

 

 数据库搜索结果:

python_json与pymsql模块

 

 

 

2.进行数据替换。先进行思考,测试用例写在哪里,读取的数据是什么格式的,对于格式的替换数据方法可以使用什么。我这里使用的是slsx文件,读取的数据类型为str,以str为例进行初步替换:

replace()

 

data=‘{"mobile_phone":"#phone#","password":12345}‘
phone=‘18139702685‘

if "#phone#" in data:
print(data.replace("#phone#",phone))
运行结果:

python_json与pymsql模块

 

 

 

 

replace

python_json与pymsql模块

上一篇:locate: 无法执行 stat () `/var/lib/mlocate/mlocate.db': 没有那个文件或目录


下一篇:SQL中sa被禁用