前情回顾
上一篇文章已经封装好了操作数据库的基本类,那么本章节我们来继续。
实战任务
本次因为服务架构重构,表优化、重构,带来的任务就是需要从原来的mysql数据库中,读取原表数据(部分存在多张关联查询)然后通过调用API的服务方式灌入新的数据库表中(包含mysql、mongodb)。
执行流程如下
那么根据流程所需要的功能,需要以下的实例进行支撑:
1.并发实例
2.查询数据实例
3.执行post请求实例
目标:跨文件引用上一篇章写好的数据库基本操作类,执行测试方法正常运行
编写测试脚本 - 跨文件引用mysql操作基本类
参考:python 跨文件夹引用
1调用子目录下的模块
2程序结构如下:
3-- src
4 |-- mod1.py
5 |-- lib
6 | |-- mod2.py
7 |-- test1.py
8这时看到test1.py和lib目录(即mod2.py的父级目录)
9如果想在程序test1.py中导入模块mod2.py ,可以在lib件夹中建立空文件__init__.py文件
10(也可以在该文件中自定义输出模块接口),然后使用:
11from lib import mod2
12或
13import lib.mod2
因为我是调用子目录模块,所以需要直接在工具类的文件目录创建一个空文件__init__.py文件。
使用test01.py文件调用如下:
代码如下:
1# -*- coding: utf-8 -*-
2
3from tools.MysqlTools import MysqldbHelper
4import pymysql
5
6if __name__ == "__main__":
7
8 # 定义数据库访问参数
9 config = {
10 'host': '你的mysql服务器IP',
11 'port': 3361,
12 'user': 'root',
13 'passwd': '你的mysql服务器密码',
14 'charset': 'utf8',
15 'cursorclass': pymysql.cursors.DictCursor
16 }
17
18 # 初始化打开数据库连接
19 mydb = MysqldbHelper(config)
20
21 # 打印数据库版本
22 print mydb.getVersion()
23
24 # 创建数据库
25 DB_NAME = 'test_db'
26 # mydb.createDataBase(DB_NAME)
27
28 # 选择数据库
29 print "========= 选择数据库%s ===========" % DB_NAME
30 mydb.selectDataBase(DB_NAME)
31
32 #创建表
33 TABLE_NAME = 'test_user'
34 print "========= 选择数据表%s ===========" % TABLE_NAME
35 # CREATE TABLE %s(id int(11) primary key,name varchar(30))' %TABLE_NAME
36 attrdict = {'name':'varchar(30) NOT NULL'}
37 constraint = "PRIMARY KEY(`id`)"
38 mydb.creatTable(TABLE_NAME,attrdict,constraint)
39
40 # 插入纪录
41 print "========= 单条数据插入 ==========="
42 params = {}
43 for i in range(5):
44 params.update({"name":"testuser"+str(i)}) # 生成字典数据,循环插入
45 print params
46 mydb.insert(TABLE_NAME, params)
47 print
48
49 # 批量插入数据
50 print "========= 多条数据同时插入 ==========="
51 insert_values = []
52 for i in range(5):
53 # values.append((i,"testuser"+str(i)))
54 insert_values.append([u"测试用户"+str(i)]) # 插入中文数据
55 print insert_values
56 insert_attrs = ["name"]
57 mydb.insertMany(TABLE_NAME,insert_attrs, insert_values)
58
59 # 数据查询
60 print "========= 数据查询 ==========="
61 print mydb.select(TABLE_NAME, fields=["id", "name"])
62 print mydb.select(TABLE_NAME, cond_dict = {'name':'测试用户2'},fields=["id", "name"])
63 print mydb.select(TABLE_NAME, cond_dict = {'name':'测试用户2'},fields=["id", "name"],order="order by id desc")
64
65 # 删除数据
66 print "========= 删除数据 ==========="
67 delete_params = {"name": "测试用户2"}
68 mydb.delete(TABLE_NAME, delete_params)
69
70 # 更新数据
71 print "========= 更新数据 ==========="
72 update_params = {"name": "测试用户99"} # 需要更新为什么值
73 update_cond_dict = {"name": "测试用户3"} # 更新执行的查询条件
74 mydb.update(TABLE_NAME, update_params, update_cond_dict)
75
76 # 删除表数据
77 print "========= 删除表数据 ==========="
78 # mydb.deleteTable(TABLE_NAME)
79
80 # 删除表
81 print "========= 删除表 ==========="
82 # mydb.dropTable(TABLE_NAME)
好了,到了这里基本上都知道了如何跨文件引用模块了。那么下一步将之前的post请求方法也写成一个工具类,方便后续调用。
关注公众号回复【资料】即可获得python、php、java、前端等视频资源