51 lines
1.8 KiB
Python
51 lines
1.8 KiB
Python
#!/usr/bin/python
|
||
# -*- coding: utf-8 -*-
|
||
# @version : 1.0
|
||
# @Creaet Time : 2021/10/18 22:18
|
||
# @File : crud.py
|
||
# @IDE : PyCharm
|
||
# @desc : 数据库 增删改查操作
|
||
|
||
# sqlalchemy 查询操作:https://segmentfault.com/a/1190000016767008
|
||
# sqlalchemy 关联查询:https://www.jianshu.com/p/dfad7c08c57a
|
||
# sqlalchemy 关联查询详细:https://blog.csdn.net/u012324798/article/details/103940527
|
||
from typing import List
|
||
|
||
from sqlalchemy import select
|
||
from sqlalchemy.ext.asyncio import AsyncSession
|
||
from . import models, schemas
|
||
from core.crud import DalBase
|
||
|
||
|
||
class DictTypeDal(DalBase):
|
||
|
||
def __init__(self, db: AsyncSession):
|
||
super(DictTypeDal, self).__init__(db, models.VadminDictType, schemas.DictTypeSimpleOut)
|
||
|
||
async def get_dicts_details(self, dict_types: List[str]) -> dict:
|
||
"""
|
||
获取多个字典类型下的字典元素列表
|
||
"""
|
||
data = {}
|
||
for dict_type in dict_types:
|
||
dict_data = await DictTypeDal(self.db).\
|
||
get_data(dict_type=dict_type, return_none=True, options=[self.model.details])
|
||
if not dict_data:
|
||
data[dict_type] = []
|
||
continue
|
||
else:
|
||
data[dict_type] = [schemas.DictDetailsSimpleOut.from_orm(i).dict() for i in dict_data.details]
|
||
return data
|
||
|
||
async def get_select_datas(self):
|
||
"""获取选择数据,全部数据"""
|
||
sql = select(self.model)
|
||
queryset = await self.db.execute(sql)
|
||
return [schemas.DictTypeSelectOut.from_orm(i).dict() for i in queryset.scalars().all()]
|
||
|
||
|
||
class DictDetailsDal(DalBase):
|
||
|
||
def __init__(self, db: AsyncSession):
|
||
super(DictDetailsDal, self).__init__(db, models.VadminDictDetails, schemas.DictDetailsSimpleOut)
|