Python采用并发查询mysql以及调用API灌数据 (三)- Python跨文件目录引入类方法_Python开发

前情回顾

上一篇文章已经封装好了操作数据库的基本类,那么本章节我们来继续。

实战任务

本次因为服务架构重构,表优化、重构,带来的任务就是需要从原来的mysql数据库中,读取原表数据(部分存在多张关联查询)然后通过调用API的服务方式灌入新的数据库表中(包含mysql、mongodb)。

执行流程如下

Python采用并发查询mysql以及调用API灌数据 (三)- Python跨文件目录引入类方法_Python开发_02

那么根据流程所需要的功能,需要以下的实例进行支撑:
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文件。

Python采用并发查询mysql以及调用API灌数据 (三)- Python跨文件目录引入类方法_Python教程_03

使用test01.py文件调用如下:

Python采用并发查询mysql以及调用API灌数据 (三)- Python跨文件目录引入类方法_Python开发_04

代码如下:

 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、前端等视频资源