试图在注释和文档类之间创建关联关系。 我面临的问题是,仅当我使用关联表对象而不是该表名时,我的辅助关系才起作用。 我的意思是这种关系:

notes = relationship(u'Note', secondary=t_Documented, backref='documents')

有效,但以下内容无效:

notes = relationship(u'Note', secondary='Documented', backref='documents')

查询时,出现错误:

sqlalchemy.exc.InvalidRequestError:初始化映射程序Mapper | Document | Document时,表达式'Documented'找不到名称(“未定义名称'Documented'”)。 如果这是一个类名,请考虑在定义了两个从属类之后,将此Relation()添加到类中。

我宁愿使用名称,因为我的模型是使用sqlacodegen生成的。

此外,SQLAlchemy的文档说我可以将名称( http://docs.sqlalchemy.org/en/rel_0_9/orm/relationships.html#many-to-many )与带有“正在使用声明式扩展名”的警告一起使用。 我用Google搜索这个词,使我想到了这一点 问题是我该如何扩充基础。

# model.py
# coding: utf-8
from sqlalchemy import Column, Date, DateTime, ForeignKey, ForeignKeyConstraint, Index, Integer, Numeric, String, Table, Text, text
from sqlalchemy.orm import backref, relationship
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
metadata = Base.metadata

t_Documented = Table(
    'Documented', metadata,
    Column('id', Integer, primary_key=True),
    Column('note_id', ForeignKey(u'MySchema.Note.id'), nullable=False),
    Column('document_id', ForeignKey(u'MySchema.Document.id'), nullable=False, index=True),
    Column('inserted', DateTime, nullable=False, server_default=text("'0000-00-00 00:00:00'")),
    Column('updated', DateTime, nullable=False, server_default=text("'0000-00-00 00:00:00'")),
    Index('Documented_AK1', 'note_id', 'document_id'),
    schema='MySchema'
)

class Note(Base):
    __tablename__ = 'Note'
    __table_args__ = {u'schema': 'MySchema'}

    id = Column(Integer, primary_key=True)

class Document(Note):
    __tablename__ = 'Document'
    __table_args__ = {u'schema': 'MySchema'}

    id = Column(ForeignKey(u'MySchema.Note.id'), primary_key=True)
    title = Column(String(100), nullable=False)
    author = Column(String(100), nullable=False)

    notes = relationship(u'Note', secondary='Documented', backref='documents')

使用SQLAlchemy 0.9.4和Python 2.6.6。 连接器是MySQLDB,我正在使用MySQL数据库。

===============>>#1 票数:5 已采纳

您的表的架构为“ MySchema”,因此必须包含在其中:

notes = relationship(u'Note', secondary='MySchema.Documented', backref='documents')

  ask by ksindi translate from so

未解决问题?本站智能推荐:

1回复

与关联对象在同一个表上的多对多关系

相关(对于无关联对象用例): SQLAlchemy单表上的多对多关系 建立多对多关系很容易。 如上面的问题所述,在同一个表上建立多对多关系几乎一样容易。 与关联对象建立多对多关系也很容易。 我似乎无法找到的是将关联对象和多对多关系组合在一起的正确方法,左右两侧是同一个表。
1回复

通过过滤在关联表上定义关系

此示例在SQLAlchemy文档( https://docs.sqlalchemy.org/en/13/orm/basic_relationships.html#association-object )的“父/子”关联表上开发。 如何在Parent类上定义'son'或'daughter'属
2回复

多对多关联对象和定义的所有关系在删除时崩溃

当具有描述了所有关系的完全多对多关系时,两个主要对象之一的删除将崩溃。 描述 车 ( .car_ownerships )< - >( .car )CarOwnership( .person )< - >( .car_ownerships ) 人 汽车 (
1回复

SQLAlchemy,自引用辅助表关联

我正在尝试在SQLAlchemy中创建“产品”对象,到目前为止,我已经使所有工作都可以接受产品的“附件”。 我所拥有的是一种产品,其中包含字段/值对的列表(例如,容量:12 L等),以及整数ID和目录号。 我希望能够将某些“附件”与给定的产品相关联,而这些附件也是产品。 本质上,我只需要一
2回复

删除sqlalchemy中的多对多辅助表关联中的所有关联

我有以下模型和协会: 当我尝试删除产品时,我收到以下错误:AssertionError 我该如何解决?
1回复

SQLAlchemy:通过辅助表为同表关系建模

我有一个products表,我想在产品之间创建关系(即“您可能也喜欢这些产品...”) 有一个名为product_related的辅助表,其中包含数据。 如何在SQLAlchemy中对此建模? 产品展示 产品相关 我的尝试(使用flask-sqlalch
2回复

SQLAlchemy使用关联表以多对多关系插入数据

我已经看到了一些与此类似的问题,但是没有一个问题在头上很明显。 基本上我在使用SQLAlchemy的Flask应用程序中有三个表模型Center() , Business()和CenterBusiness() 。 目前我正在以这种方式添加到所述关系中: 正如你所看到的那样有点难看,我
1回复

将组合主键添加到生产中的辅助关联表

我有一个包含设置错误的表: 我真的应该在这两个Columns或PrimaryKeyConstraint('id1', 'id2', name='silly_me')添加primary_key=True 。 它最初创建的自动生成代码是: 而且我确认我的Postgres数据库没
1回复

Flask-Sqlalchemy,多对多关系中辅助表的主键

我正在尝试使用Flask-Sqlalchemy为Postgresql数据库构建简单的多对多关系: 如果我尝试将书籍附加到作者的书籍列表中: 所以我有这个错误: 有没有办法配置模型来自动设置关联表中的主键?
1回复

使用SqlAlchemy中的关联表一对一的自我引用关系

所以我在Topic模型与此类所表示的关系之间有一个父子关系: 主题定义如下: 我现在想让parent成为一对一的关系(我可能会在以后更改),但是它以InstrumentedList 。 是否有一种简单的方法来声明parent应该是一对一的关系,以便它直接链接到Topic模型而不