Archived
重写了app内的主函数, 并支持了MySQL数据库, 将所有关于数据库操作的代码全部重写
This commit is contained in:
19 files changed
+839
-516
No files matched your search
@@ -0,0 +1,130 @@
|
||||
#!/usr/bin/env python3
|
||||
# -- coding:utf-8 --
|
||||
# @Author: markushammered@gmail.com
|
||||
# @Development Tool: PyCharm
|
||||
# @Create Time: 2022/2/26
|
||||
# @File Name: MySQL.py
|
||||
|
||||
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
from models import * # 导入所有的主题表模型
|
||||
from typing import List, Tuple
|
||||
|
||||
|
||||
class MySQL:
|
||||
"""使用SQLAlchemy进行的MySQL数据库操作"""
|
||||
|
||||
@property
|
||||
def session(self):
|
||||
"""
|
||||
创建会话
|
||||
:return:
|
||||
"""
|
||||
return self.Session()
|
||||
|
||||
def __init__(self,
|
||||
host: str,
|
||||
user: str,
|
||||
pwd: str,
|
||||
database: str,
|
||||
charset: str = 'utf8',
|
||||
port: int = 3306
|
||||
) -> None:
|
||||
"""
|
||||
初始化
|
||||
:param host: 数据库地址
|
||||
:param port: 数据库端口默认3306
|
||||
:param user: 用户名
|
||||
:param pwd: 登陆密码
|
||||
:param database: 数据库名
|
||||
:param charset: 字符集 默认utf8
|
||||
"""
|
||||
self.host = host
|
||||
self.port = port
|
||||
self.user = user
|
||||
self.password = pwd
|
||||
self.database = database
|
||||
self.charset = charset
|
||||
self.engine = create_engine(
|
||||
f'mysql+pymysql://{self.user}:{self.password}@{self.host}:{self.port}/{self.database}') # 连接到数据库
|
||||
self.Session = sessionmaker(bind=self.engine) # 创建引擎
|
||||
self.Base = Base
|
||||
|
||||
def __del__(self):
|
||||
"""
|
||||
自动提交
|
||||
自动关闭连接
|
||||
:return:
|
||||
"""
|
||||
self.session.commit()
|
||||
self.session.close()
|
||||
|
||||
def insert(self, name: str, times: int = 0) -> bool:
|
||||
"""
|
||||
插入数据
|
||||
:param name: 名称
|
||||
:param times: 次数 默认0
|
||||
:return:
|
||||
"""
|
||||
new_data = ReqCount(name=name, times=times)
|
||||
self.session.add(new_data)
|
||||
self.session.commit()
|
||||
return True
|
||||
|
||||
def update(self, name: str, times: int) -> bool:
|
||||
"""
|
||||
更新数据
|
||||
:param name: 名称
|
||||
:param times: 次数
|
||||
:return:
|
||||
"""
|
||||
self.session.query(ReqCount).filter(ReqCount.name == name).update({'name': name, 'times': times})
|
||||
return True
|
||||
|
||||
def delete(self, name: str) -> bool:
|
||||
"""
|
||||
删除数据
|
||||
:param name: 名称
|
||||
:return:
|
||||
"""
|
||||
self.session.query(ReqCount).filter(ReqCount.name == name)
|
||||
return True
|
||||
|
||||
def fetch(self, name: str) -> int:
|
||||
"""
|
||||
查询数据
|
||||
:param name:
|
||||
:return:
|
||||
"""
|
||||
data = self.session.query(ReqCount).filter(ReqCount.name == name).all()
|
||||
for i in data:
|
||||
return i.times
|
||||
|
||||
def fetchall(self) -> List[Tuple]:
|
||||
"""
|
||||
抓取全部数据
|
||||
:return:
|
||||
"""
|
||||
data_list = []
|
||||
data = self.session.query(ReqCount).filter().all()
|
||||
for tup in data:
|
||||
data_list.append((tup.name, tup.times))
|
||||
|
||||
return data_list
|
||||
|
||||
def fetch_table(self, table_name: str) -> List[Tuple] or bool:
|
||||
"""
|
||||
抓取指定名称的表
|
||||
:param table_name:
|
||||
:return:
|
||||
"""
|
||||
table_list = []
|
||||
tables = self.session.query(eval(table_name)).filter().all() # 使用eval函数将字符串转换为Python对象
|
||||
for tup in tables:
|
||||
table_list.append((tup.k, tup.v, tup.w, tup.h))
|
||||
return table_list
|
||||
|
||||
def create(self):
|
||||
self.Base.metadata.create_all(self.engine)
|
||||
|
||||
Reference in New Issue
Block a user