我有一个 SQLAlchemy 设置,其中我的一个模型未存储在数据库中。数据来自网络服务,而其他模型只存储一个主键来引用它。
如何在仍然使用 SQLAlchemy 关系的同时完成这项工作?我现在将数据本地缓存在数据库中,并在发生变化时从 Web 服务进行更新,但这意味着我正在存储数据的冗余副本。我根本不想在本地存储。考虑一下:
Base = declarative_base()
# Web service-backed model
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
username = Column(Unicode(20), nullable=False)
@classmethod
def get(cls, id):
"""Get an instance using data from the web service."""
pass
# Local model
class Document(Base):
__tablename__ = 'document'
id = Column(Integer, primary_key=True)
user_id = Column(Integer, ForeignKey('user.id'))
user = relationship(User, backref='documents')
content = Column(UnicodeText)
Document.user
我想从我的数据库中删除 User 模型并仅从 Web 服务中检索它(这很简单),同时仍然保留 SQLAlchemy(和User.documents
)提供的双向关系的好处。
我如何实现后者?