# Получить JSON из запроса
data = request.get_json()
# Получить по ID (SQLAlchemy 2.x)
obj = db.session.get(Model, id)
# Список (SQLAlchemy 2.x)
from sqlalchemy import select
items = db.session.execute(select(Model)).scalars().all()
# Сохранить
db.session.add(obj); db.session.commit()
# Удалить
db.session.delete(obj); db.session.commit()
# Статусы: 200 OK, 201 Created, 400 Bad Request, 404 Not Found
from sqlalchemy import select
# CREATE
obj = Model(field=value)
db.session.add(obj)
db.session.commit()
print(obj.id) # ID присвоен после commit
# READ — один по ID
obj = db.session.get(Model, id) # None если не найден
# READ — список
objs = db.session.execute(select(Model)).scalars().all()
# READ — с фильтром
result = db.session.execute(
select(Model).where(Model.field == value)
).scalars().all()
# READ — первый или None
one = db.session.execute(
select(Model).filter_by(field=value)
).scalar_one_or_none()
# UPDATE
obj = db.session.get(Model, id)
obj.field = new_value
db.session.commit()
# DELETE
obj = db.session.get(Model, id)
db.session.delete(obj)
db.session.commit()
4. Шаблон эндпоинта с обработкой ошибок
@bp.route('/<int:id>', methods=['PUT'])
def update_item(id):
# 1. Найти объект
item = db.session.get(Item, id)
if item is None:
return jsonify({'error': 'Not found'}), 404
# 2. Получить и проверить данные
data = request.get_json()
if not data:
return jsonify({'error': 'No data provided'}), 400
# 3. Применить изменения
if 'name' in data:
item.name = data['name']
# 4. Сохранить
db.session.commit()
return jsonify({'message': 'Updated', 'id': item.id}), 200