重写了app内的主函数, 并支持了MySQL数据库, 将所有关于数据库操作的代码全部重写

This commit is contained in:
MarkusJoe
2022-02-28 21:18:05 +08:00
parent ea66246d66
commit c2e757f90a
19 files changed
+839 -516

No files matched your search

@@ -8,12 +8,9 @@
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from tables import * # 导入所有的主题表模型
from models import * # 导入所有的主题表模型
from typing import List, Tuple
Base = declarative_base()
class MySQL:
"""使用SQLAlchemy进行的MySQL数据库操作"""
@@ -50,8 +47,9 @@ class MySQL:
self.database = database
self.charset = charset
self.engine = create_engine(
f'mysql+mysqlconnector://{self.user}:{self.password}@{self.host}:{self.port}/{self.database}') # 连接到数据库
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):
"""
@@ -101,7 +99,7 @@ class MySQL:
"""
data = self.session.query(ReqCount).filter(ReqCount.name == name).all()
for i in data:
print(i.times)
return i.times
def fetchall(self) -> List[Tuple]:
"""
@@ -126,3 +124,7 @@ class MySQL:
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)
-8
View File
@@ -1,8 +0,0 @@
#!/usr/bin/env python3
# -- coding:utf-8 --
# @Author: markushammered@gmail.com
# @Development Tool: PyCharm
# @Create Time: 2022/2/26
# @File Name: __init__.py.py
+155
View File
@@ -0,0 +1,155 @@
#!/usr/bin/env python3
# -- coding:utf-8 --
# @Author: markushammered@gmail.com
# @Development Tool: PyCharm
# @Create Time: 2022/2/27
# @File Name: MySQL_.py
import pymysql
class MySQL:
"""操作MySQL数据库"""
def __init__(self,
host: str,
user: str,
pwd: str,
database: str
) -> None:
"""
初始化MySQL对象并创建一个连接
创建的连接会在执行完毕后自动提交以及自动关闭
:param host: 数据库地址
:param user: 数据库用户名
:param pwd: 数据库密码
:param database: 数据库名
"""
self.__host = host
self.__user = user
self.__password = pwd
self.__database = database
self.__conn = pymysql.connect(user=self.__user,
password=self.__password,
host=self.__host,
database=self.__database) # 创建连接
self.__cursor = self.__conn.cursor()
def __del__(self):
"""
自动提交
自动关闭连接
:return:
"""
self.__conn.commit()
self.__cursor.close()
self.__conn.close()
@property
def show_tables(self) -> list:
"""
查询已有的表
:return:
"""
self.__cursor.execute('show tables;') # 列出所有的表名
tuple_tables = self.__cursor.fetchall()
# 将元组类型转换为列表
tables = []
for origin in tuple_tables:
tables.append(origin[0])
del tuple_tables
return tables
def exists_name(self, name: str):
"""
判断是否存在于数据库内
:param name:
:return:
"""
status = self.fetch(name)
if status == ():
return False
else:
return True
def exists_table(self, table: str) -> bool:
"""
判断表是否在数据库内
:param table:
:return:
"""
tables = self.show_tables
if table in tables:
return True
else:
return False
def insert(self, name: str, times: int = 0) -> bool:
"""
插入数据
:param name:
:param times:
:return:
"""
try:
self.__cursor.execute(
'insert into reqcount(name, times) values("%(name)s", %(times)s);' % {'name': name, 'times': times})
return True
except pymysql.err.IntegrityError:
return False
def delete(self, name: str) -> bool:
"""
删除数据
:param name:
:return:
"""
self.__cursor.execute('delete from reqcount where name="%(name)s";' % {'name': name})
return True
def fetch(self, name: str) -> bool or tuple:
"""
抓取数据
:param name:
:return:
"""
self.__cursor.execute('select * from reqcount where name="%(name)s";' % {'name': name})
data = self.__cursor.fetchall()
if data == ():
return False
else:
return data[0]
def update(self, name: str, times: int) -> bool:
"""
更改数据
:param name:
:param times:
:return:
"""
self.__cursor.execute(
'update reqcount set times="%(times)s where name="%(name)s"";' % {'times': times, 'name': name})
return True
def fetching_table(self, table: str) -> list:
"""
抓取主题表内的数据
:param table:
:return:
"""
self.__cursor.execute('select * from %(table)s' % {'table': table})
datas = self.__cursor.fetchall()
lst = []
for i in datas:
lst.append({'k': i[0],
'v': i[1],
'w': i[2],
'h': i[3]}
) # 向空列表内添加抓取到的数据 -> 将元组数据转换为列表
del datas
return lst
__all__ = ['MySQL']
+141
View File
@@ -0,0 +1,141 @@
#!/usr/bin/env python3
# -- coding:utf-8 --
# @Author: markushammered@gmail.com
# @Development Tool: PyCharm
# @Create Time: 2022/2/27
# @File Name: SQLite_.py
import sqlite3
class SQLite:
"""操作SQLite数据库"""
def __init__(self,
path: str = './bin/db/data.db'
) -> None:
"""
初始化SQLite对象
:param path: 数据库路径
"""
self.__path = path
self.__conn = sqlite3.connect(self.__path)
self.__cursor = self.__conn.cursor()
def __del__(self) -> None:
"""
自动提交
自动关闭连接
:return:
"""
self.__conn.commit()
self.__cursor.close()
self.__conn.close()
@property
def show_tables(self) -> list:
"""
列出所有在数据库内的表
:return:
"""
self.__cursor.execute('select * from sqlite_master where type="table"')
tables = self.__cursor.fetchall()
lst = []
for table in tables:
lst.append(table[1])
del tables
return lst
def exist_name(self, name: str) -> bool:
"""
判断当前名称是否在数据库内
调用fetch方法判断
:param name:
:return:
"""
status = self.fetch(name)
if status == ():
return False
else:
return True
def exist_table(self, table: str) -> bool:
"""
判断表是否在数据库内
:param table:
:return:
"""
tables = self.show_tables
if table in tables:
return True
else:
return False
def insert(self, name: str, times: int) -> bool:
"""
插入数据
:param name:
:param times:
:return:
"""
self.__cursor.execute(
'insert into reqcount values(name="%(name)s", times=%(times)s)' % {'name': name, 'times': times})
return True
def delete(self, name: str) -> bool:
"""
删除数据
:param name:
:return:
"""
self.__cursor.execute('delete from reqcount where name="%(name)s"' % {'name': name})
return True
def fetch(self, name: str) -> tuple:
"""
抓取数据
:param name:
:return:
"""
self.__cursor.execute('select * from reqcount where name="%(name)s"' % {'name': name})
data = self.__cursor.fetchall()
if len(data):
return data[0]
else:
return tuple(data)
def update(self, name: str, times: int) -> bool:
"""
更新数据
:param name:
:param times:
:return:
"""
self.__cursor.execute(
'update reqcount set times=%(times)s where name="%(name)s"' % {'times': times, 'name': name})
return True
def fetching_table(self, table: str) -> list[dict]:
"""
抓取主题表的数据
:param table:
:return:
"""
status = self.exist_table(table)
if status:
tables = self.__cursor.execute('select * from %(table)s' % {'table': table})
lst = []
for data in tables:
lst.append({'index': data[0],
'base64': data[1],
'width': data[2],
'height': data[3]})
del tables
return lst
else:
return []
sqlite = SQLite('../db/data.db')
print(sqlite.fetching_table('gelbooru'))
@@ -9,7 +9,7 @@
from sqlalchemy import Column
from sqlalchemy import Integer
from sqlalchemy import String
from sqlalchemy import Text
from sqlalchemy import VARCHAR
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
@@ -20,351 +20,351 @@ Base = declarative_base()
class ReqCount(Base):
"""计数器数据库模型"""
__tablename__ = 'ReqCount'
__tablename__ = 'reqcount'
name = Column(String(20), primary_key=True) # 名称
times = Column(Integer()) # 次数
class gelbooru(Base):
__tablename__ = 'gelbooru'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class moebooru(Base):
__tablename__ = 'moebooru'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class g(Base):
__tablename__ = 'g'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class cripple(Base):
__tablename__ = 'cripple'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class blacked(Base):
__tablename__ = 'blacked'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class rule34(Base):
__tablename__ = 'rule34'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class steambanner(Base):
__tablename__ = 'steambanner'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class lefty(Base):
__tablename__ = 'lefty'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class crewbooru(Base):
__tablename__ = 'crewbooru'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class sthg(Base):
__tablename__ = 'sthg'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class rfck(Base):
__tablename__ = 'rfck'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class lisu(Base):
__tablename__ = 'lisu'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class tv(Base):
__tablename__ = 'tv'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class lewd(Base):
__tablename__ = 'lewd'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class amibooru(Base):
__tablename__ = 'amibooru'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class blankatlas(Base):
__tablename__ = 'blankatlas'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class mmballbusting(Base):
__tablename__ = 'mmballbusting'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class sss(Base):
__tablename__ = 'sss'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class legolamb(Base):
__tablename__ = 'legolamb'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class goldengator(Base):
__tablename__ = 'goldengator'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class r6gdrawfriends(Base):
__tablename__ = 'r6gdrawfriends'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class vivi(Base):
__tablename__ = 'vivi'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class twifanartsfw(Base):
__tablename__ = 'twifanartsfw'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class hololive(Base):
__tablename__ = 'hololive'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class vglobby(Base):
__tablename__ = 'vglobby'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class jaypee(Base):
__tablename__ = 'jaypee'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class melanin(Base):
__tablename__ = 'melanin'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class orb(Base):
__tablename__ = 'orb'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class min(Base):
__tablename__ = 'min'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class mjg(Base):
__tablename__ = 'mjg'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class cloppers(Base):
__tablename__ = 'cloppers'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class townofgravityfalls(Base):
__tablename__ = 'townofgravityfalls'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class brown(Base):
__tablename__ = 'brown'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class enacdoa(Base):
__tablename__ = 'enacdoa'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class daifuku(Base):
__tablename__ = 'daifuku'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class osc(Base):
__tablename__ = 'osc'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class girlsfeet(Base):
__tablename__ = 'girlsfeet'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class hybreedsgeneral(Base):
__tablename__ = 'hybreedsgeneral'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class sr(Base):
__tablename__ = 'sr'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class mono(Base):
__tablename__ = 'mono'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class riskofrain(Base):
__tablename__ = 'riskofrain'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class neovb(Base):
__tablename__ = 'neovb'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
class ffsr(Base):
__tablename__ = 'ffsr'
k = Column(Text, primary_key=True)
v = Column(Text)
k = Column(VARCHAR(500), primary_key=True)
v = Column(VARCHAR(500))
w = Column(Integer())
h = Column(Integer())
@@ -373,4 +373,4 @@ __all__ = ['ReqCount', 'gelbooru', 'moebooru', 'g', 'cripple', 'blacked', 'rule3
'sthg', 'rfck', 'lisu', 'tv', 'lewd', 'amibooru', 'blankatlas', 'mmballbusting', 'sss', 'legolamb',
'goldengator', 'r6gdrawfriends', 'vivi', 'twifanartsfw', 'hololive', 'vglobby', 'jaypee', 'melanin', 'orb',
'min', 'mjg', 'cloppers', 'townofgravityfalls', 'brown', 'enacdoa', 'daifuku', 'osc', 'girlsfeet',
'hybreedsgeneral', 'sr', 'mono', 'riskofrain', 'neovb', 'ffsr']
'hybreedsgeneral', 'sr', 'mono', 'riskofrain', 'neovb', 'ffsr', 'Base']