项目初次搭建

This commit is contained in:
2025-02-13 16:29:28 +08:00
parent feef37cbd7
commit 3cb2a4c507
121 changed files with 19550 additions and 0 deletions

20
app/db/db_base.py Normal file
View File

@ -0,0 +1,20 @@
from sqlalchemy.ext.declarative import declarative_base, declared_attr
from sqlalchemy.orm import Mapped, mapped_column
import datetime
Base = declarative_base()
class DbCommon(Base):
__abstract__ = True
id: Mapped[int] = mapped_column(primary_key=True)
create_time: Mapped[datetime.datetime] = mapped_column(default=datetime.datetime.utcnow())
update_time: Mapped[datetime.datetime] = mapped_column(default=datetime.datetime.utcnow(), onupdate=datetime.datetime.utcnow())
def keys(self):
return ["id", "create_time", "update_time"]
@declared_attr
def __tablename__(cls):
return cls.__name__.lower()

9
app/db/db_engine.py Normal file
View File

@ -0,0 +1,9 @@
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, scoped_session
from app.config.config_reader import database_url
db_engine = create_engine(database_url, echo=True, echo_pool=True)
db_session = sessionmaker(bind=db_engine, autoflush=False, autocommit=False, expire_on_commit=True)
session = scoped_session(db_session)

9
app/db/db_session.py Normal file
View File

@ -0,0 +1,9 @@
from app.db.db_engine import db_session
def get_db():
session = db_session()
try:
yield session
finally:
session.close()

26
app/db/page_util.py Normal file
View File

@ -0,0 +1,26 @@
from sqlalchemy.orm.query import Query
def get_pager(query: Query, pagerNum: int, pagerSize: int, ):
total = query.count()
data = query.limit(pagerSize).offset((pagerNum - 1) * pagerSize).all()
pager = Pager(total, data)
return pager
class Pager:
def __init__(self, total: int, data: object):
self.total = total
self.data = data
def keys(self):
keys = ["total", "data"]
return keys
def __getitem__(self, item):
'''
内置方法, 当使用obj['name']的形式的时候, 将调用这个方法, 这里返回的结果就是值
:param item:
:return:
'''
return getattr(self, item, None)