使用sqlalchemy加载现有的多对多表关系

时间:2009-09-16 02:12:36

标签: python sqlalchemy

我正在使用SqlAlchemy与现有的PostgreSQL数据库进行交互。

我需要访问以多对多关系组织的数据。该文档描述了如何创建关系,但我找不到一个整齐地加载和查询现有关系的示例。

1 个答案:

答案 0 :(得分:1)

查询现有关系与创建新关系并没有什么不同。您几乎编写相同的代码,但指定已存在的表和列名称,当然您不需要SQLAlchemy发出CREATE TABLE语句。

http://www.sqlalchemy.org/docs/05/mappers.html#many-to-many。您需要做的就是为示例中的现有父表,子表和关联表指定外键列,并指定autoload=True以填写表中的其他字段。如果您的关联表存储了其他信息,就像它们几乎总是那样,那么您应该将多对多关系分解为两个多对一关系。

我在使用MySQL时学习了SQLAlchemy。使用该数据库,我总是必须指定外键关系,因为它们不是明确的数据库约束。您可能会很幸运,并且能够从数据库中反映更多内容,但您可能更喜欢使用http://pypi.python.org/pypi/sqlautocode之类的内容来编写整个数据库架构并避免反射延迟。