@pcdesign

Как сделать update в flask sqlalchemy?

В чистом виде на sql запрос выглядит так:
update stat set user_id=1 where user_id=2

Гуглил на этот счет, но все решения не подошли.

Запись user_id в таблице stat не уникальна.
Вот для примера:
==========================
MariaDB []> select id , date , user_id from stat where user_id = 2 limit 0,3;
+-------+---------------------+---------+
| id | date | user_id |
+-------+---------------------+---------+
| 63573 | 2011-12-18 17:20:17 | 2 |
| 63653 | 2011-12-18 18:51:33 | 2 |
| 63654 | 2011-12-18 18:51:39 | 2 |
+-------+---------------------+---------+
3 rows in set (0.00 sec)

========================

А все решения, которые гуглятся они расчитаны на update только одного row.
  • Вопрос задан
  • 18123 просмотра
Решения вопроса 1
Через filter или filter_by можно получить нужные строки - filter и filter_by. Затем можно уже в цикле обойти все записи и записать нужное значение.

НО! это не самый лучший подход, точнее это плохой подход! В SQLAlchemy есть один хороший метод - update. В итоге можно сделать всё примерно так:
u_id = get_userid()
rows = Stat.query.filter_by(user_id = u_id).update({'user_id': 1})
db.session.commit()


А вообще не нужно ничего гуглить, всё есть в официальной документации.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@kirilldzr
user = User.query.get(1)
user.email = 'ww@gmail.com'
db.session.add(user)
db.session.commit()

blog.miguelgrinberg.com/post/the-flask-mega-tutori...
Ответ написан
@bromzh
Drugs-driven development
Можно написать самому миграцию. Если что пойдёт не так - откатишься.
Для фласка есть плагин (который есть обёртка над alembic)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы