目录
12.2 退出程序,正常退出时exit(0)--sys.exit(n)
8、MySQL
数据库的操作-pymysql
在做测试过程中,我们可以把测试数据创建在数据库,也可以读取数据库中的数据进行断言操作
python操作数据库之前需要安装数据库驱动
-
安装方式:
pip install pymysql
8.1 连接并操作数据库
import pymysql
# 连接数据库
my_connect = pymysql.connect(host = '',user = '',password = '',database = '',port = ,charset = 'utf8')
# 建立游标:目的是为了缓存数据方便操作(读取数据,遍历表中的所有数据,以便查询)
du_shuju = my_connect.cursor()
#执行sql语句
du_shuju.execute("select * from xxxxx;")
#获取数据
huoqu_data = du_shuju.fetchall()
print(huoqu_data)
#修改表中的数据
du_shuju.execute("update 表名 set 字段名="xxx" where 字段名="yyy";")
#提交数据,修改的数据要进行提交才能修改数据库中的数据,否则修改的只是游标缓存里的数据
my_connect.commit()
注意点:链接数据库的connect
类返回的是链接对象,使用链接对象创建游标对象。使用游标对象的execute
方法执行sql
语句。如果是更新表操作需要使用链接对象commit
提交。如果是查询操作需要使用游标的对象的fetchall
方法获取查询结果,不需要使用链接对象commit
提交,因为查询操作没有更新表。
9、ini
文件的操作-configparser
什么是ini
文件
ini
文件是Initialization File
的缩写,即初始化文件,是windows
的系统配置文件所采用的存储格式。
ini
文件的格式:ini
文件由节、键、值组成。
[节点/section]
(键=值)
key=value
例子:setup.ini
[Startup] RequireOS=Windows 7 RequireMSI=3.1 RequireIE=7.0.0000.0 Require64BitVCRT=1 [Windows 7] PlatformID=2 MajorVersion=6 MinorVersion=1
9.1 模块-configparser
configparser
是第三方模块,主要是用来操作ini
文件
安装方式:pip install configparser
9.2 读取ini
文件中的内容
使用configparser的Configparser类是实例对象的read
方法读取ini
文件,需要给read
传入ini
文件路径。
# 注意点:Configparser类的实例对象的read方法的机制:读取ini文件之后加载到Configparser类的实例对象中的。
# 1:获取ini文件的绝对路径 os.path.dirname(os.path.dirname(__file__))获取当前文件父级的父级目录
ini_path = os.path.dirname(os.path.dirname(__file__)) + '/data_config/config.ini'
# 2: 创建Configparser类的实例对象
conf = configparser.ConfigParser()
# 3: 调用read方法读取ini文件
# read("ini文件的路径"):返回值是读取成功的文件路径。机制:讲读取成功的文件加载到Configparser类型的实例对象中
conf.read(ini_path)
9.3 获取指定建的值
使用configparser的Configparser类是实例对象的get
方法获取ini
文件下指点键对应的值。
conf = configparser.COnfigparser()
conf.get("节点名", "键")
10 json
文件操作-json
json
是用来存储简单的数据结构和对象的文件。json
是一种轻量级的数据交换格式,基于ECMAScript
(欧洲计算机协会制定的js
规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据,用于许多Web应用程序来进行数据交换。
10.1 json
文件的格式或者json
数据的格式
1.列表方式 [ ]---列表套字典或者列表套列表
[{
"id" : 1 ,
"name" : "xiaoming"
},{
"id" : 2 ,
"name" : "xiaohong"
},["name", "age", "sex"]
]
2.字典方式 { }--字典套字典或者字典套列表
// 前后端分离,推荐后端返回给前端数据格式
{
"status" : 0 , //执行状态码
"msg" : "SUCCESS", //说明文字信息,没有为NULL
"data" :[{ //对象中嵌套数组,数组是返回的数据,
"id" : 1 ,
"name" : "xiaohong"
},{
"id" : 2,
"name" : "xiaoming"
}]
}
3.反例
{"id" : ox16 } //不合法,数值需要是十进制
{"name" : underfined } //不合法,没有该值
[{
"name" : NUll,
"school" : function() {
console.log("该写法是错误的")
}//不合法
}]//json中不能使用自定义函数,或系统内置函数
json
模块是python自带的
10.2 json.load/json.loads
-
json.load(文件对象)
:将json
文件转成python
对象 -
json.loads(字符串)
将字符串数据转成python
对象# json.laods(字符串) json_data = '{"a": {"b": {"c": "数据"}}}' result = json.loads(json_data) print(type(result)) # json.load(文件对象) with open(r'json文件路径', mode="r") as f: print(json.load(f))
10.3 json.dump/json.dumps
-
json.dump(obj, fp)
:将python
对象写入json
文件 -
json.dumps(obj)
:将python
对象转成json
数据# json.dumps(obj) dict1 = {"a": {"b": {"c": "数据"}}} result = json.dumps(dict1) print(type(result)) # json.dump(obj, fp) dict2 = {"a": {"b": {"c": "数据"}}} with open(r"json_data.json", mode="w") as fp: json.dump(dict2, fp)
11 yaml
文件操作-pyyaml
11.1 yaml
文件的应用场景
yaml其实也类似于 json、txt ,它们都属于一种文本格式。在我们的实际工作中, yaml 文件经常作为服务期配置文件来使用。 比如一些定义好的内容,并且不会修改的信息,我们就可以通过定义 yaml 文件,然后通过读取这样的文件,将数据导入到我们的服务中进行使用。
由于 yaml
文件一般作为配置文件使用,所以较少会修改。
11.2 yaml
文件的格式
1、大小写敏感
2、使用缩进表示层级关系
3、缩进的空格数目不重要,只要相同层级的元素左侧对齐即可,通常开头缩进两个空格
4、不支持Tab键制表符缩进,只使用空格缩进
5、字符后缩进一个空格,如冒号,逗号,短横杆(-)等
6、"—“表示YAML
格式,一个文件的开始,用于分隔文件间
7、”#”表示注释 (yaml
文件只有行注释)
YAML 支持的数据结构有三种。
-
对象:键值对的集合,又称为字典(dictionary)
-
数组:一组按次序排列的值,又称为 列表(list)
-
纯量(scalars):单个的、不可再分的值
下面对这三种数据结构做详细介绍:
yaml 中的值有以下基本类型:
-
字符串
-
整形
-
浮点型
-
布尔型
-
null
-
时间
-
日期
# 注释 # 1-1、字典 键: 值 username: xiaoming # 冒号后面是空格 password: 123456 info: 配置 # 中文---不建议使用,有可能会乱码 # 1-2、字典嵌套 NAME_PSW: name: xiaoming password: 123456 # 字典套列表 person: name: 锋声 age: 18 man: true address: - 深圳 - 北京 - 广州 # 字典套列表 person1: name: 锋声 age: 18 man: true address: [深圳, 北京, 广州] # 字典套列表 childs: - name: 锋声 age: 10 - name: 锋声 age: 15 # 字典套列表 person2: name: 锋声 age: 18 man: true address: [深圳, 北京, 广州] twoArr: - - 2 - 3 - 1 - - 10 - 12 - 30 # 列表 - 1 - 2 # 列表嵌套字典 - user1: aaa - user2: bbb age: 10 sex: male
11.3 第三方包 - pyyaml
pyyaml
的安装:pip install PyYAML
import yaml
def read(path):
with open(path, 'r') as file:
data = file.read()
result = yaml.load(data)
# result = yaml.load(data, Loader=yaml.FullLoader)
return result
这是因为在 YAML 5.1
版本后弃用了yaml.load(file)
这个用法,因为觉得很不安全,5.1版本之后就修改了需要指定Loader
,通过默认加载器(FullLoader)
禁止执行任意函数,该load
函数也变得更加安全。所以我们需要将 result = yaml.load(data)
改为 result = yaml.load(data, Loader=yaml.FullLoader)
。
解决该 TypeError
不单单 只有 yaml.load(data, Loader=yaml.FullLoader)
这一个方法。
以下三选一即可解决该 TypeError
yaml.safe_load(file.read())
yaml.load(file.read(), Loader=yaml.FullLoader)
yaml.load(file.read(), Loader=yaml.CLoader)
12 sys
模块
sys模块是与python解释器交互的一个接口。sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分。
12.1 处理命令行参数--sys.argv
在解释器启动后, argv
列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称。
12.2 退出程序,正常退出时exit(0)
--sys.exit(n)
sys.exit(5)
print(11)
print(11)
print(11)
# 退出python执行程序,下面的代码将不会执行,如同shell中的exit一样。
12.3 获取Python解释程序的版本信息
import sys
print(sys.version)
12.4 操作系统平台名称
import sys
print(sys.platform)