予定された支払いと過去の支払いのテーブルがあり、同じユーザー/契約に対して同じ週に 2 つの請求があるかどうかを確認する必要があります。
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);
このクエリを sqlalchemy で再現するのに苦労しています。これは主に、MySQL の「間隔」をデータベースに依存しない形式で SQLAlchemy に変換する方法が見つからないためです。
これまでのところ、すべてを翻訳するこれを思いつきましたが、間隔は次のとおりです。
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()
何か案は?