2008-10-30 60 views
3

我找不到任何有关如何使用SQLAlchemy的声明性语法指定关系 的任何适当文档。它不受支持吗?也就是说,我应该使用“传统”语法吗?
我正在寻找一种方法来指定更高级别的关系,避免不必乱搞外键等..我想只声明“地址= OneToMany(地址)”,并让框架处理的细节..我知道Elixir可以做到这一点,但我想知道“简单”的SQLA是否也可以做到这一点。
感谢您的帮助!如何使用SQLAlchemy声明性语法指定关系?

+0

你是什么意思?“就是说,我应该使用”传统“语法吗?”请详细说明。 – 2008-10-30 15:56:27

+0

那么,我正在寻找一种方法来指定更高层次的关系,所以避免与外键等混乱。我想只声明“地址= OneToMany(地址)”,并让框架处理的细节..我知道Elixir可以做到这一点,但我想知道“简单”的SQLA是否也可以做到这一点。 – Joril 2008-10-30 16:16:08

+0

@Joril:请你用你的意见更新这个问题吗? – 2008-10-30 17:40:27

回答

3

假设你是指the declarative plugin,我要说的话是记录举例这里的一切:

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')) 
0

Declarative docs的“配置关系”部分。不像“OneToMany”那么高,但比完全指定关系更好。

class Address(Base): 
    __tablename__ = 'addresses' 

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