[database]
user = root
password = 1qaz@WSX
host = 192.168.10.212
port = 3306
db = dataset
charset=utf8
import string
import pymysql
import configparser
import logging
# logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
class Database:
# 数据库操作类,提供连接数据库、更新、查询、删除、截断、解释查询、创建和删除表等功能。
def __init__(self):
# 读取配置文件
config = configparser.ConfigParser()
config.read('config.ini')
# 获取数据库连接参数
self.host = config.get('database', 'host')
self.user = config.get('database', 'user')
self.password = config.get('database', 'password')
self.db = config.get('database', 'db')
# 初始化数据库连接
self.conn = self.get_conn()
# 获取数据库连接
def get_conn(self):
# 异常捕捉:如果获取连接失败,捕获异常并打印错误信息
try:
return pymysql.connect(**{
'host': self.host,
'user': self.user,
'password': self.password,
'db': self.db,
'charset': 'utf8mb4'
})
except pymysql.MySQLError as e:
logging.debug(f"获取数据库连接失败:{e}")
return None
# 更新动态表
def update_dynamic_table(self, table_name, columns, condition):
# 执行SQL更新语句
sql = f"UPDATE %s SET %s WHERE %s" % (
table_name, ', '.join(['%s=\'%s\'' % (c, str(columns[c])) for c in columns.keys()]), condition)
# 在执行之前打印 SQL 语句
logging.debug(sql)
try:
with self.conn.cursor() as cursor:
cursor.execute(sql)
self.conn.commit()
logging.debug(f"更新动态表'{table_name}'成功。")
except pymysql.MySQLError as e:
logging.debug(f"更新动态表失败:{e}")
except Exception as e:
logging.debug(f"更新动态表时发生错误:{e}")
def query_dynamic_table_page(self, table_name, columns, condition, page, page_size):
# 计算偏移量
offset = (page - 1) * page_size
# 构造 SQL 查询语句,包括分页参数
sql = f"SELE