前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python采用并发查询mysql以及调用API灌数据 (三)- Python跨文件目录引入类方法

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

作者头像
Devops海洋的渔夫
发布2019-05-31 16:27:03
7980
发布2019-05-31 16:27:03
举报
文章被收录于专栏:Devops专栏Devops专栏

前情回顾

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

实战任务

本次因为服务架构重构,表优化、重构,带来的任务就是需要从原来的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请求方法也写成一个工具类,方便后续调用。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.11.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档