#创建数据库连接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)