如何使用SQLAlchemy声明性语法指定关系?

3 投票
2 回答
4128 浏览
提问于 2025-04-11 17:55

我找不到关于如何使用SQLAlchemy的声明式语法来指定关系的合适文档。这是不支持的吗?也就是说,我应该使用“传统”的语法吗?
我希望能以更高的层次来指定关系,避免去处理外键等复杂的东西。我想直接声明“addresses = OneToMany(Address)”,然后让框架来处理细节。我知道Elixir可以做到这一点,但我在想“普通”的SQLAlchemy是否也能做到。
谢谢你的帮助!

2 个回答

0

看看声明式文档中的“配置关系”部分。这个内容的层次不如“一对多”那么简单,但比完全详细说明关系要好一些。

class Address(Base):
    __tablename__ = 'addresses'

    id = Column(Integer, primary_key=True)
    email = Column(String(50))
    user_id = Column(Integer, ForeignKey('users.id'))
3

假设你指的是声明式插件,我接下来要说的内容都有文档和示例说明:

class User(Base):
    __tablename__ = 'users'

    id = Column('id', Integer, primary_key=True)
    addresses = relation("Address", backref="user")

class Address(Base):
    __tablename__ = 'addresses'

    id = Column('id', Integer, primary_key=True)
    user_id = Column('user_id', Integer, ForeignKey('users.id'))

撰写回答