工具类
import pymysql
from logaid import log
import time
class MySQLDB:
def __init__(self, host, port, user, passwd: str, db, charset: str):
self.host = host
self.port = port
self.user = user
self.passwd = passwd
self.db = db
self.charset = charset
self.cursor = None
self.connection = None
def connect(self):
"""连接到 MySQL 数据库"""
try:
self.connection = pymysql.Connect(
host=self.host,
port=self.port,
user=self.user,
passwd=self.passwd,
db=self.db,
charset=self.charset
)
self.cursor = self.connection.cursor()
return True
except Exception as e:
time.sleep(6)
log.error(f'Connect mysql is failed. error{e}')
return False
def close(self):
"""关闭数据库连接"""
if self.cursor:
self.cursor.close()
if self.connection:
self.connection.close()
def execute(self, query, params=None) -> bool:
"""
原生 sql 执行语句
"""
self.connect()
try:
if self.cursor:
self.cursor.execute(query, params)
self.connection.commit()
return True
except Exception as e:
self.connection.rollback()
log.error(f'Execute is failed. error:{e}. query:{query}')
finally:
self.close()
return False
def query(self, sql):
"""
查询,返回结果
:param sql: SQL 查询语句
:return: 查询结果
"""
if self.execute(sql):
return self.cursor.fetchall()
return False
def insert(self, sql, value):
"""
插入,返回记录 ID
:param sql: SQL 插入语句
:param value: 插入语句的参数
:return: bool|int
"""
if self.execute(sql, value):
insert_id = self.cursor.lastrowid
return insert_id
return False
def update(self, sql, value=None) -> bool:
"""
更新
:param sql: SQL 更新语句
:param value: 更新语句的参数
:return: bool
"""
return self.execute(sql, value)
def exist(self, sql) -> bool:
"""
是否存在
:param sql: sql 查询语句
:return: bool
"""
if self.execute(sql):
return self.cursor.fetchone()[0] > 0
return True
if __name__ == '__main__':
a = MySQLDB('127.0.0.1',3306,'admin','admin','abc','utf8mb4')
sql = f"select count(*) from login where source='{1}';"
sql_result = a.exist(sql)
print(sql_result)