如何投入交易

时间:2009-10-21 22:29:43

标签: python google-app-engine

我有一个班级:

class AccountTransaction(db.Model):
    account = db.ReferenceProperty(reference_class=Account)
    tran_date = db.DateProperty()
    debit_credit = db.IntegerProperty() ## -1, 1
    amount = db.FloatProperty()
    comment = db.StringProperty()
    pair = db.SelfReferenceProperty()

所以,我想要的是创建一个Save()方法,该方法将在事务中运行以下步骤:

  • 保存AccountTransaction
  • 保存配对的AccountTransaction(配对的交易对是自循环引用)
  • 更新两个帐户中的每个帐户的余额 - 主帐户和帐户的帐户配对交易的帐户

交易的父母可能是他们的账户,但似乎无法建立这些实体的实体组。

根据RDBMS描述,这意味着我希望一个表有两个外键(一个实体 - 两个父项)。怎么办?

起初,我试图不管理余额,但每次计算它似乎都很慢......

怎么办?

1 个答案:

答案 0 :(得分:1)

由于您的帐户实体不能全部位于同一实体组中,因此您无法在单个事务中执行更新。有一些技巧可以做到这一点,特别是在你遇到的“汇款”案例中 - 事实上,我写了a blog post关于这个确切的主题。