首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

前情回顾

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

实战任务

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

执行流程如下

那么根据流程所需要的功能,需要以下的实例进行支撑:

1.并发实例

2.查询数据实例

3.执行post请求实例

目标:跨文件引用上一篇章写好的数据库基本操作类,执行测试方法正常运行

编写测试脚本 - 跨文件引用mysql操作基本类 参考:python 跨文件夹引用

代码语言:javascript
复制
调用子目录下的模块
程序结构如下:
-- 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文件调用如下:

代码如下:

代码语言:javascript
复制
# -*- 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请求方法也写成一个工具类,方便后续调用。

下一篇
举报
领券