SQLAlchemy 找不到类名

新手上路,请多包涵

简化后,我有以下类结构(在单个文件中):

 Base = declarative_base()

class Item(Base):
    __tablename__ = 'item'
    id = Column(BigInteger, primary_key=True)
    # ... skip other attrs ...

 class Auction(Base):
     __tablename__ = 'auction'
     id = Column(BigInteger, primary_key=True)
     # ... skipped ...
     item_id = Column('item', BigInteger, ForeignKey('item.id'))

     item = relationship('Item', backref='auctions')

我从中得到以下错误:

 sqlalchemy.exc.InvalidRequestError
InvalidRequestError: When initializing mapper Mapper|Auction|auction, expression
    'Item' failed to locate a name ("name 'Item' is not defined"). If this is a
    class name, consider adding this relationship() to the Auction class after
    both dependent classes have been defined.

我不确定 Python 是如何找不到 Item 类的,因为即使在传递类时,而不是将名称作为字符串传递,我也会遇到同样的错误。我一直在努力寻找如何与 SQLAlchemy 建立简单关系的示例,所以如果这里有明显的错误,我深表歉意。

原文由 Ross 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
1 个回答

这一切都是因为我在 Pyramid 中设置 SQLAlchemy 的方式。本质上,您需要严格按照 本节 进行操作,并确保使用相同的 declarative_base 实例作为每个模型的基类。

我也没有将数据库引擎绑定到我的 DBSession 这不会打扰你,直到你尝试访问表元数据,这在你使用关系时发生。

原文由 Ross 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏