«Фильтр» в Python Def в SQL не работает [закрыто]Python

Программы на Python
Anonymous
«Фильтр» в Python Def в SQL не работает [закрыто]

Сообщение Anonymous »

Код: Выделить всё

def getBeforePoint(userId, endDate=None):
today = datetime.now().date()
if endDate is None:
endDate = sfunc.getTimeNowStr()

subquery = (
db.session.query(
T_user_point.acquired_at,
M_promotion_code.valid_days,
T_user_promotion_code.promotion_code_id,
T_user_point.user_promotion_code_id,
T_user_promotion_code.user_promotion_code_id,
)
.join(T_user_promotion_code, T_user_point.user_promotion_code_id == T_user_promotion_code.user_promotion_code_id)
.join(M_promotion_code, T_user_promotion_code.promotion_code_id == M_promotion_code.promotion_code_id)
.filter(T_user_point.user_id == userId)
.subquery()
)

valid_days = db.session.query(subquery.c.valid_days).filter(
subquery.c.user_promotion_code_id == T_user_point.user_promotion_code_id,
subquery.c.user_promotion_code_id == T_user_promotion_code.user_promotion_code_id,
subquery.c.promotion_code_id == M_promotion_code.promotion_code_id,
T_user_point.user_id == userId
).scalar()

if valid_days is not None:
valid_duration = timedelta(days=valid_days)
point_expiration_date = subquery.c.acquired_at + valid_duration
point_with_valid_days = (
db.session.query(func.sum(T_user_point.point))
.join(subquery, T_user_point.user_promotion_code_id == subquery.c.user_promotion_code_id)
.filter(
T_user_point.user_id == userId,
T_user_point.is_deleted == False,
subquery.c.valid_days.isnot(None),
today < point_expiration_date,
T_user_point.user_promotion_code_id == T_user_promotion_code.user_promotion_code_id
)
.scalar() or 0
)
else:
point_with_valid_days = 0

return point

Сделанный мной фильтр не работает...
Я фильтрую «сегодня < point_expiration_date», но он не работает.
Ничего страшного, но это не так не работает.
Я ошибся с «point_expiration_date»?
Я попробовал «timedelta», и ничего не вышло, но не работает...

Подробнее здесь: https://stackoverflow.com/questions/785 ... oesnt-work

Вернуться в «Python»