我有以下代码:
purchased_offer = session.query(PurchasedOffer).filter_by(purchased_offer_id=purchased_offer_id).first()
used_offer = UsedOffer(purchased_offer)
session.add(used_offer)
session.delete(purchased_offer)
我只是将purchased_offer
转移到used_offer
表格,然后删除purchased_offer
。
两个表格UsedOffer
和PurchasedOffer
仅因名称不同而与内容相同。
class UsedOffer(Base):
__tablename__ = 'used_offer'
used_offer_id = Column(Integer, primary_key=True)
user_id = Column(ForeignKey(u'user.user_id'), nullable=False, index=True)
venue_id = Column(ForeignKey(u'venue.venue_id'), nullable=False, index=True)
offer_message = Column(String(1024), nullable=False)
user = relationship(u'User')
venue = relationship(u'Venue')
def __init__(self, purchased_offer):
self.user_id = purchased_offer.user_id
self.venue_id = purchased_offer.venue_id
self.offer_message = purchased_offer.offer_message
class PurchasedOffer(Base):
__tablename__ = 'purchased_offer'
purchased_offer_id = Column(Integer, primary_key=True)
user_id = Column(ForeignKey(u'user.user_id'), nullable=False, index=True)
venue_id = Column(ForeignKey(u'venue.venue_id'), nullable=False, index=True)
offer_message = Column(String(1024), nullable=False)
user = relationship(u'User')
venue = relationship(u'Venue')
def __init__(self, user_id = None, venue_id = None, offer_message = None):
self.user_id = user_id
self.venue_id = venue_id
self.offer_message = offer_message
我的问题是,当我向used_offer
添加database
时,used_offer_id
始终设置为0
,因此当我完成此过程时{{1}时间,我得到一个2nd
。
任何人都有任何关于为什么会发生这种情况的想法?
答案 0 :(得分:0)
您必须设置每个used_offer_id的唯一值(不应始终设置为0),因为您已将其声明为主键。
答案 1 :(得分:0)
您的used_offer_id是主键,因此无法复制。在创建UsedOffer对象之前删除此属性(使用del关键字)。 SQLAlchemy将自动创建一个