SQLAlchemy добавление / обновление в цикле for: обновление не работает - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь сделать следующее: перебрать серию записей, если они уже существуют, я обновляю их. Если его не существует, я добавляю его.

По какой-то причине добавление работает нормально, но обновление не происходит. вот код:

for interchange in data:
    ltype='asdf'
    plink='qwer'

    e = Part.query.filter_by(interchange=interchange, light_type=ltype).first()
    if e is None:
        notpresent = notpresent + 1
        p = Part(interchange=interchange,light_type=ltype,partslink=plink,ptype=ptype)
        db.session.add(p)
    else:
        present = present + 1
        e.partslink = plink
        e.ptype = ptype

db.session.commit()

Я распечатываю настоящие и не присутствующие переменные, и оба они> 0.

Я неправильно обрабатываю часть обновления, когда запись найдена? Эта часть не спасается.

1 Ответ

0 голосов
/ 02 мая 2019

вы пропустили строку:

# ...
else:
    present = present + 1
    e.partslink = plink
    e.ptype = ptype    
    db.session.add(e)  # here 'add' is adding changes to the session, not a new item.

вы не можете зафиксировать изменения, если вы их не зарегистрируете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...