Flask — как получить последнюю запись из БД?

Есть следующие таблицы в БД:
class Car_Log(db.Model):
    rent_id = db.Column(db.Integer, primary_key = True)
    car_id = db.Column(db.Integer, db.ForeignKey('car.car_id'))
    time_begin = db.Column(db.DateTime, default = datetime.now)
    time_end = db.Column(db.DateTime)
    time_sum = db.Column(db.Float())
    cost = db.Column(db.Float)

class Car(db.Model):
    car_id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(150))
    availability = db.Column(db.Boolean, default=True)

В одной из предыдущих сессий в таблицу добавляется запись в Car_Log с rent_id (поле уникальное). Т.е. сначала создается запись и добавляется time_begin, привязанное к car_id.

Как в текущей сессии найти последнюю запись с car_id (у которой, естественно, не записано еще time_end) вызвать ее и добавить time_end.

Вопрос только в том как найти запись по car_id

Мой вариант, указанный ниже, не работает:

if request.form.get('rent') == 'rent':
    new_car_log = Car_Log()
    db.session.add(new_car_log)
    car.availability = 0
    new_car_log.car_id = car.car_id
    new_car_log.time_begin = datetime.now()

if request.form.get('free') == 'free':
    new_car_log = session.query(Car_Log).order_by(Car_Log.car_id.desc()).first()
    car.availability = 1
    new_car_log.time_end = datetime.now()
  • Вопрос задан
  • 86 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Ты неправильно ставишь вопрос. Тебе нужно найти запись для car_id, у которой time_end - NULL.
Такая запись всё равно должна быть максимум одна, иначе у тебя БД содержит противоречивую информацию.
Это можно попробовать предотвратить unique-индексом по полям car_id, time_end. Тогда у тебя не получится создать ещё одну запись с time_end = NULL, если одна уже существует для такого car_id.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы