【发布时间】:2010-12-06 20:21:19
【问题描述】:
我遇到了(可能是微不足道的)错误,但完全不知道可能的原因。我想使用 SQLAlchemy 在数据库中插入两个对象。这些对象是相关的,这里是声明。班级用户:
class User(Base):
__tablename__ = 'cp_user'
id = Column(Integer, Sequence('id_seq'), primary_key=True)
# ... more properties
班级图片(用户可能有很多):
class Picture(Base):
__tablename__ = 'picture'
id = Column(Integer, Sequence('id_seq'), primary_key=True)
authorId = Column('author_id', Integer, ForeignKey('cp_user.id'))
author = relation(User, primaryjoin = authorId == User.id)
# ... more properties
我正在尝试在从数据库中获取正确的用户之后插入新图片,或者只是创建它:
s = newSession()
user = s.query(User.name).filter("...some filter here...").first()
if not(user):
user = User()
s.add(user)
s.commit()
picture = Picture()
picture.author = user
s.add(picture)
s.commit()
这会失败,但有以下异常:AttributeError: 'RowTuple' object has no attribute '_sa_instance_state'
我尝试将作者的分配移动到构造函数——同样的错误。我不能直接分配 ID——这打破了 ORM 的想法。
我做错了什么?
【问题讨论】:
标签: python sql orm sqlalchemy