колба sqlalchemy не обновляет строки

#python #sqlalchemy

Вопрос:

Я использую Flask-SQLAlchemy с локальным размещением postgresql, и у меня есть этот код, в котором я должен обновить данные пользователя в базе данных, как только он войдет в систему

     user_id = current_user.get_id()
    print(f"nn user_id: {user_id}nn") #1--->
    x = users.query.filter_by(id=user_id).first()
    x.sid = request.sid
    db.session.commit()
    print(f'nn user_object.sid:{x.sid} , request.sid:{request.sid}  nn') #2 --->
 

#1 : userid:1

#2 : x.sid:QKfGvdsL-HGUM-FHHYF, request.sid:QKfGvdsL-HGUM-FHHYF

но потом, когда я смотрю на pgadmin4 или запрашиваю значение x.sid позже, оно всегда «нулевое».

Я искал везде, и все, кажется, предлагают тот же способ, которым я писал свой код.

Стоит упомянуть :

  1. sid column был добавлен с помощью flask.migrate, он не был создан вместе с таблицей.
  2. Просто чтобы убедиться, что в моем коде нет ничего, что перезаписывает послесловие значения, pgadmin4 переписал значение null на что-то уникальное, и оно осталось, с его значением ничего не произошло.
  3. я пытался использовать db.session.add(x) , но он продолжал говорить, что информация о данных уже существует

Ответ №1:

Вы могли бы попробовать:

 db.session.merge(x)
db.session.commit()
 

Этот код создает новую строку, если она не существовала, в противном случае обновляет существующую.