Как получить текущую вставленную строку в PonyORM? - PullRequest
0 голосов
/ 10 марта 2019

Я использовал следующий код, чтобы получить все значения o текущей вставленной строки в PonyORM.

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

Но первичный ключ все еще не имеет значения.идентификатор - автоинкремент.Как я могу получить идентификатор текущей вставленной записи в PonyORM?

1 Ответ

0 голосов
/ 10 марта 2019

Вам необходимо явно очистить объект, вызвав его Entity.flush() метод :

Сохранить изменения, внесенные в этот объект, в базу данных. Обычно Pony сохраняет изменения автоматически, и вам не нужно вызывать этот метод самостоятельно. Один из случаев, когда это может понадобиться, - это когда вы хотите получить значение первичного ключа вновь созданного объекта, который имеет автоинкрементный первичный ключ перед фиксацией.

Жирный акцент шахты

Другой вариант - сначала явно указать commit . Из Сохранение объектов в базе данных раздел :

Если вам нужно получить значение первичного ключа для вновь созданного объекта, вы можете сделать 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)
...