项目初次搭建
This commit is contained in:
20
app/db/db_base.py
Normal file
20
app/db/db_base.py
Normal 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
9
app/db/db_engine.py
Normal 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
9
app/db/db_session.py
Normal 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
26
app/db/page_util.py
Normal 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)
|
Reference in New Issue
Block a user