Колба: количество обновленных строк - PullRequest
0 голосов
/ 05 июня 2018

Как я могу получить количество строк, обновленных / добавленных из db.session.commit() во фляге?

Если я попытаюсь:

    for row in csv_data:
        ticket_num = row[0]

        # Generate random UUID token string
        token = uuid.uuid4()

        ticket = Ticket(token, ticket_num, None, None, batch_num)
        db.session.add(ticket)

    num = db.session.commit()
    if num:
        flash(str(num) + ' tickets were uploaded/updated.')

Я не получу никакой обратной связи.

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Есть свойства для сеанса, и вы можете проверить, что произойдет в базе данных.Сессия имеет new: для объектов, которые будут добавлены в базу данных, и dirty: для объектов, которые будут обновляться:

t1 = Ticket(token, ticket_num, None, None, batch_num)
t2 = Ticket(token, ticket_num, None, None, batch_num)
t3 = Ticket.query.filter_by(token='Something to match').first()
t3.token = 'Something new'
db.session.add_all([t1, t2, t3])

# check for new
>>> db.session.new
IdentitySet([<Ticket (transient 140452313747240)>, <Ticket (transient 140452278620112)>])
# check updates
>>> db.session.dirty
>>>db.session.dirty
IdentitySet([<Ticket 2>])  # 2 is ticket id for me

Вы можете проверить длину курса: len(db.session.new)

Обратите внимание, что это доступно до фиксации, но вы будете знать, сколько элементов было добавлено и обновлено.

0 голосов
/ 05 июня 2018

db.session.commit() ничего не возвращает, поэтому вы можете попытаться отследить количество вещей, которые вы добавляете в БД, например:

flash(str(len(csv_data)) + ' tickets were uploaded/updated.')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...