小编swa*_*223的帖子

如何检索 ORM 对象而不是 Row 对象?

我想使用命令式数据类映射将我的数据类映射到列

以下教程我将定义模型:

@dataclass
class User:
    id: int = field(init=False)
    name: str = None
    fullname: str = None
    nickname: str = None
    addresses: List[Address] = field(default_factory=list)
Run Code Online (Sandbox Code Playgroud)

然后将其映射到列:


user = Table(
    "user",
    metadata_obj,
    Column("id", Integer, primary_key=True),
    Column("name", String(50)),
    Column("fullname", String(50)),
    Column("nickname", String(12)),
)
Run Code Online (Sandbox Code Playgroud)

最后我用一些对象填充数据库。当我想取回模型时出现问题;

q = select(User)
first = engine.execute(q).first()
Run Code Online (Sandbox Code Playgroud)

这给了我一个 sqlalchemy.engine.row.LegacyRow 实例。(我知道我在 _mapping 属性下得到了 dict)当我想从 ORM 中获取 User 实例时,它更多的是一个低级结构。

此外,由于 id 字段上的 init=False 选项,创建构造函数类方法不会有帮助。

那么可以使用我的模型吗?

python orm sqlalchemy

3
推荐指数
1
解决办法
1911
查看次数

标签 统计

orm ×1

python ×1

sqlalchemy ×1