前情回顾
上一篇文章已经封装好了操作数据库的基本类,那么本章节我们来继续。
实战任务
本次因为服务架构重构,表优化、重构,带来的任务就是需要从原来的mysql数据库中,读取原表数据(部分存在多张关联查询)然后通过调用API的服务方式灌入新的数据库表中(包含mysql、mongodb)。
执行流程如下
那么根据流程所需要的功能,需要以下的实例进行支撑:
1.并发实例
2.查询数据实例
3.执行post请求实例
目标:跨文件引用上一篇章写好的数据库基本操作类,执行测试方法正常运行
编写测试脚本 - 跨文件引用mysql操作基本类 参考:python 跨文件夹引用
调用子目录下的模块
程序结构如下:
-- src
|-- mod1.py
|-- lib
| |-- mod2.py
|-- test1.py
这时看到test1.py和lib目录(即mod2.py的父级目录)
如果想在程序test1.py中导入模块mod2.py ,可以在lib件夹中建立空文件__init__.py文件
(也可以在该文件中自定义输出模块接口),然后使用:
from lib import mod2
或
import lib.mod2
因为我是调用子目录模块,所以需要直接在工具类的文件目录创建一个空文件__init__.py
文件。
使用test01.py文件调用如下:
代码如下:
# -*- coding: utf-8 -*-
from tools.MysqlTools import MysqldbHelper
import pymysql
if __name__ == "__main__":
# 定义数据库访问参数
config = {
'host': '你的mysql服务器IP',
'port': 3361,
'user': 'root',
'passwd': '你的mysql服务器密码',
'charset': 'utf8',
'cursorclass': pymysql.cursors.DictCursor
}
# 初始化打开数据库连接
mydb = MysqldbHelper(config)
# 打印数据库版本
print mydb.getVersion()
# 创建数据库
DB_NAME = 'test_db'
# mydb.createDataBase(DB_NAME)
# 选择数据库
print "========= 选择数据库%s ===========" % DB_NAME
mydb.selectDataBase(DB_NAME)
#创建表
TABLE_NAME = 'test_user'
print "========= 选择数据表%s ===========" % TABLE_NAME
# CREATE TABLE %s(id int(11) primary key,name varchar(30))' %TABLE_NAME
attrdict = {'name':'varchar(30) NOT NULL'}
constraint = "PRIMARY KEY(`id`)"
mydb.creatTable(TABLE_NAME,attrdict,constraint)
# 插入纪录
print "========= 单条数据插入 ==========="
params = {}
for i in range(5):
params.update({"name":"testuser"+str(i)}) # 生成字典数据,循环插入
print params
mydb.insert(TABLE_NAME, params)
print
# 批量插入数据
print "========= 多条数据同时插入 ==========="
insert_values = []
for i in range(5):
# values.append((i,"testuser"+str(i)))
insert_values.append([u"测试用户"+str(i)]) # 插入中文数据
print insert_values
insert_attrs = ["name"]
mydb.insertMany(TABLE_NAME,insert_attrs, insert_values)
# 数据查询
print "========= 数据查询 ==========="
print mydb.select(TABLE_NAME, fields=["id", "name"])
print mydb.select(TABLE_NAME, cond_dict = {'name':'测试用户2'},fields=["id", "name"])
print mydb.select(TABLE_NAME, cond_dict = {'name':'测试用户2'},fields=["id", "name"],order="order by id desc")
# 删除数据
print "========= 删除数据 ==========="
delete_params = {"name": "测试用户2"}
mydb.delete(TABLE_NAME, delete_params)
# 更新数据
print "========= 更新数据 ==========="
update_params = {"name": "测试用户99"} # 需要更新为什么值
update_cond_dict = {"name": "测试用户3"} # 更新执行的查询条件
mydb.update(TABLE_NAME, update_params, update_cond_dict)
# 删除表数据
print "========= 删除表数据 ==========="
# mydb.deleteTable(TABLE_NAME)
# 删除表
print "========= 删除表 ==========="
# mydb.dropTable(TABLE_NAME)
好了,到了这里基本上都知道了如何跨文件引用模块了。那么下一步将之前的post请求方法也写成一个工具类,方便后续调用。