Je l'ai en cours d'exécution sur un site Web en direct. Lorsqu'un utilisateur se connecte, j'interroge son profil pour voir combien de "crédits" il a à sa disposition. Les crédits sont achetés via paypal. Si une personne achète des crédits et que le paiement lui parvient, la requête affiche toujours 0 crédit, bien que si j'exécute la même requête dans phpmyadmin, elle apporte le bon résultat. Si je redémarre le serveur web Apache et recharge la page, le nombre de crédits est affiché. Voici mon code mappeur qui montre le nombre de crédits par chaque utilisateur:sqlalchemy mise en cache de certaines requêtes
mapper(User, users_table, order_by = 'user.date_added DESC, user.id DESC', properties = {
'userCreditsCount': column_property(
select(
[func.ifnull(func.sum(orders_table.c.quantity), 0)],
orders_table.c.user_id == users_table.c.id
).where(and_(
orders_table.c.date_added > get_order_expire_limit(), # order must not be older than a month
orders_table.c.status == STATUS_COMPLETED
)).\
label('userCreditsCount'),
deferred = True
)
# other properties....
})
J'utilise sqlalchemy avec le cadre de flacon mais pas en utilisant leur paquet flacon-sqlalchemy (juste sqlalchemy pur)
Voici comment je lance ma base de données:
engine = create_engine(config.DATABASE_URI, pool_recycle = True)
metadata = MetaData()
db_session = scoped_session(sessionmaker(bind = engine, autoflush = True, autocommit = False))
Je l'ai appris à la fois python et sqlalchemy sur ce projet afin que je puisse être absent des choses, mais celui-ci me conduit noix. Des idées?
Je ne pense pas que l'autocommit défini sur True soit un moyen intelligent. Ils ne le recommandent même pas sur leurs documents. –