#sqlalchemy
#sqlalchemy
Вопрос:
Я написал код на python, используя sqlalchemy, извлекающий данные из MySQL. Когда страница равна 1 (начало равно 0, а конец равен 10), все работает нормально, но когда страница равна 2 (начало равно 10, а конец равен 20), db_salon и db_user_paymant равны нулю.
Я пытался использовать join и joinedload, но все равно это не работает.
def get_user_bookings(db: Session, user_id: int, page: int):
start = (page - 1) * 10
end = (page * 10)
db_user_bookings = db.query(DbBasketMain).options(
subqueryload("db_basket_services"), subqueryload("db_salon"),
subqueryload("db_user_payment")).filter(
DbBasketMain.user_id == user_id, DbBasketMain.salon_id != None).slice(
start, end).all()
for each_booking in db_user_bookings:
each_booking.salon_name = each_booking.db_salon.name
for each_service in each_booking.db_basket_services:
if (each_service.barber_id):
db_barber = get_barber_by_id(
db=db, barber_id=each_service.barber_id)
each_service.barber_name = db_barber.name " " db_barber.family
each_service.barber_image = get_barber_profile_image(
db=db, barber_id=each_service.barber_id)
return db_user_bookings
Комментарии:
1. Как я уже сказал, когда страница равна 1, все работает нормально, поэтому я не публиковал структуру данных и другие детали.
2. Никто? есть идеи?
Ответ №1:
При использовании slice это необходимо использовать order_by
.
Изменение на order_by(DbBasketMain.id).slice(start, end)
решило проблему.