【接口自动化】连接数据库

#创建数据库连接pymysql.Connect()参数说明
host(str):      MySQL服务器地址
port(int):      MySQL服务器端口号
user(str):      用户名
passwd(str):    密码
db(str):        数据库名称
charset(str):   连接编码,存在中文的时候,连接需要添加charset='utf8',否则中文显示乱码。

connection对象支持的方法
cursor()        使用该连接创建并返回游标
commit()        提交当前事务,不然无法保存新建或者修改的数据
rollback()      回滚当前事务
close()         关闭连接

cursor对象支持的方法
execute(op)     执行SQL,并返回受影响行数
fetchone()      取得结果集的下一行
fetchmany(size) 获取结果集的下几行
fetchall()      获取结果集中的所有行
rowcount()      返回数据条数或影响行数
close()         关闭游标对象
#!/usr/bin/env python
"""
-*- coding: utf-8 -*-
@Time    : 2021/2/19 14:27
@File    : DBConnection.py
@Describe: 封装mysql为上下文管理器
@License : Copyright SideWalk Group © 2020.All Rights Reserved
"""
import json
import os
import pymysql
import time
import filepath
from public.common import Common
from public.readConfig import ReadConfig
from decimal import *
import math

class DBConnect:

    def __init__(self, database):
        '''
        初始化,传参数的作用
        :param database: 数据库名
        '''
        self.host = ReadConfig().get_mysql('host')
        self.user = ReadConfig().get_mysql('user')
        self.passwd = ReadConfig().get_mysql('passwd')
        self.db = database

        self.conn = pymysql.connect(host=self.host, user=self.user, passwd=self.passwd, db=self.db) # 连接数据库
        self.cur = self.conn.cursor() # 创建游标
    def __enter__(self):
        '''
        连接数据库
        :return:
        '''
        return (self.cur, self.conn)


    def __exit__(self, exc_type, exc_val, exc_tb):

        self.cur.close()
        self.conn.close()


if __name__ == '__main__':
    testData_file = os.path.join(filepath.testData_path, 'testData.yaml')
    common_file = os.path.join(filepath.testData_path, 'commonData.yaml')
    test_data = Common().read_yaml_data(testData_file)
    commonData = Common().read_yaml_data(common_file)
    time_day = time.strftime('%Y%m%d', time.localtime())  # 日分表

    with DBConnect('webcomics_store') as (db, dbcoon):
        db.execute(
            f"select * from useraccount_tb where userId='{commonData['user']['user-id']}' and accountType=11")
        user = db.fetchone()
        # logger.info(f'总账户表查出的结果为{user}')
        accountTableName = user[-3]  # 子账户表名称
        print(accountTableName)
        db.execute(f"select useInfo from {accountTableName} WHERE cardBagId='8e87b77c7950ac578fa085a2'")
        # useinfo = db.fetchone()
        f_accountGoods = db.fetchone()
        # res = json.loads(f_accountGoods[0])
        print(f_accountGoods)

 

posted @ 2021-06-24 10:37  咸鱼翻身仍是咸鱼  阅读(201)  评论(0)    收藏  举报