使用 dict 方法
这种方式的不需要模型配合,便可以直接把查询数据转为字典。不过对 [[sqlalchemy]] 来讲字典中会多一个 _sa_instance_state 需要移除。
def get(self, table, column, value) -> dict:    """ 获取单条信息"""
    with self.session.begin() as session:        table_column = getattr(table, column)        stmt = select(table).where(table_column == value)        result = session.execute(stmt).scalar()
    if not result:        return {}
    result = result.__dict__                # 转为字典
    if "_sa_instance_state" in result:        del result["_sa_instance_state"]    # 删除指定键
    return result使用 dict 方法
def get(self, table, column, value) -> dict:    """ 获取单条信息"""
    with self.session.begin() as session:        table_column = getattr(table, column)        stmt = select(table).where(table_column == value)        result = session.execute(stmt).scalar()
    if not result:        return {}
    return dict(result)使用函数
可以自定义需要返回的数据,甚至是可以
class Infos(Base, GetDict):    name = Column(String(32))    age = Column(Integer)
    def to_dict(self):        return {                "name": self.name,                "age": self.age,        }模版
class GetDict:
    def keys(self):        k_list = []        for key in self.__mapper__.c.keys():            k_list.append(key)        return k_list
    def __getitem__(self, item):        return getattr(self, item)对应模型
class Infos(Base, GetDict):    name = Column(String(32))    age = Column(Integer)调用
infos = Infos()print(dict(infos))调用时需要使用 dict。
分表
class Test():    def model(suffix):        tablename = f"test{suffix}"        classname = f"test{suffix}"
        # 这里也可以传递上面的 GetDict        Model = type(classname, (Base, ), {            '__module__': __name__,            '__name__': classname,            '__tablename__': tablename,
            "id" : Column(String(36),  primary_key=True,                                       default=str(uuid.uuid4())),            "name": Column(Integer),            "create_time" : Column(DateTime, server_default=func.now(),                                             comment="创建时间"),            "update_time" : Column(DateTime, server_default=func.now(),                                             onupdate=func.now(),                                             comment='修改时间'),        })
        return Model调用
# model 返回的便是类(表模型)model = Test.model("42")db.get_all(model, {})