Operaciones de fecha y hora de SQLAlchemy en el lado del servidor

Tengo una tabla con pagos programados y pasados, y necesito encontrar si se han realizado dos cargos en la misma semana para el mismo usuario / contrato.

select count(*) from charge as c1, charge as c2 
where c1.id_contract = c2.id_contract 
  and c1.status = 'SUCCESS' 
  and c2.status in ('SUCCESS', 'PENDING', 'WAITING') 
  and c1.id > c2.id and c2.due_time > (c1.due_time - interval 7 day);

Me cuesta mucho reproducir esta consulta en sqlalchemy, principalmente porque no puedo encontrar la forma de traducir el 'intervalo' de MySQL a SQLAlchemy en una base de datos independiente.

Hasta ahora se me ocurrió esto, que traduce todo, pero el intervalo:

db.session.query(Charge, OldCharge).filter(Charge.id_contract == OldCharge.id_contract, Charge.status=='WAITING', OldCharge.status.in_(('SUCCESS', 'PENDING')), Charge.id > OldCharge.id).count()

¿Algunas ideas?

Respuestas a la pregunta(2)

Su respuesta a la pregunta