Python 从SQLAlchemy核心迁移到ORM

Python 从SQLAlchemy核心迁移到ORM,python,orm,sqlalchemy,Python,Orm,Sqlalchemy,目前我们只使用SQLAlchemy核心,所以所有的表都是使用Table定义的。现在,我们希望以增量方式将现有表移植到ORM,并让新表从头开始使用ORM 例如,假设我们目前有 Users = Table( 'users', # Table name metadata, Column('id', String, primary_key=True), Column('name', String), Column('email_address', String),

目前我们只使用SQLAlchemy核心,所以所有的表都是使用Table定义的。现在,我们希望以增量方式将现有表移植到ORM,并让新表从头开始使用ORM

例如,假设我们目前有

Users = Table(
    'users', # Table name
    metadata,
    Column('id', String, primary_key=True),
    Column('name', String),
    Column('email_address', String),
)
我们想使用ORM添加一个Posts表,比如

class Posts(Base):
    __tablename__ = 'posts'
    id = Column(Integer, primary_key=True)
    contents = Column(String(300))
如何更新Users表以反映一个用户可以有多篇文章这一事实?预期的最终目标是

Users = Table(
    'users', # Table name
    metadata,
    Column('id', String, primary_key=True),
    Column('name', String),
    Column('email_address', String),

    # How to express the equivalent of this ?
    posts = relationship("Posts", back_populates="submitter")
)

class Posts(Base):
    __tablename__ = 'posts'
    id = Column(Integer, primary_key=True)
    contents = Column(String)
    submitter = relationship("Users", back_populates="posts")

有可能这样做吗?或者在执行类似操作之前,我必须将Users表转换为ORM吗?

sqlalchemy.ORM.relationship()
用于提供映射类之间的关系,因此使用
table
不会很幸运。您可能可以通过使用来减轻将表转换为映射类的痛苦。谢谢,Ilja。Automapper可能会将表转换为映射类,但这意味着迁移将是一次“大爆炸”迁移,当前使用Core的所有数据库访问代码都被重写为使用ORM。我们希望有一条更为渐进的迁移之路,但看起来没有:-(
sqlalchemy.orm.relationship())
用于提供映射类之间的关系,因此您不会幸运地使用
。您可能能够减轻将表转换为映射类的痛苦。谢谢,Ilja。Automapper可能会将表转换为映射类,但这意味着迁移将是一次“大爆炸”将当前使用Core的所有数据库访问代码重写为使用ORM。我们希望有一条更渐进的迁移路径,但看起来没有:-(