如何在PonyORM中获取当前插入的行?

时间:2019-03-10 13:13:00

标签: python-3.x ponyorm

我使用以下代码获取PonyORM中当前插入行的所有值。

transportTypes = TransportTypes(TransportTypeTitle = data['TransportTypeTitle'], Description = data['Description'], LatestUpdateDate = datetime.now())

但是,主键仍然没有值。 ID为自动递增。如何获取PonyORM中当前插入记录的ID?

1 个答案:

答案 0 :(得分:0)

您需要通过调用实体Entity.flush() method来显式刷新实体:

  

将对此对象所做的更改保存到数据库中。通常,Pony会自动保存更改,您无需自己调用此方法。 可能需要使用的一种用例是,您想要获取一个新创建的对象的主键值,该对象在提交之前具有自动递增的主键。

粗体强调我的

另一种选择是先明确地提交。来自Saving objects in the database section

  

如果需要获取新创建对象的主键值,则可以在commit()内手动进行db_session(),以获取该值[。]

# [...]

@db_session
def handler(email):
    c = Customer(email=email)
    # c.id is equal to None
    # because it is not assigned by the database yet
    commit()
    # the new object is persisted in the database
    # c.id has the value now
    print(c.id)