これをライブWebサイトで実行しています。ユーザーがログインすると、私は彼のプロファイルを照会して、利用可能な「クレジット」の数を確認します。クレジットはペイパル経由で購入されます。人がクレジットを購入して支払いが行われた場合、phpmyadmin で同じクエリを実行すると正しい結果が得られますが、クエリはまだ 0 クレジットを示しています。Apache ウェブサーバーを再起動してページをリロードすると、正しい数のクレジットが表示されます。各ユーザーが持っているクレジット数を示すマッパーコードは次のとおりです。
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....
} )
フラスコフレームワークでsqlalchemyを使用していますが、フラスコ-sqlalchemyパッケージは使用していません(純粋なsqlalchemyのみ)
データベースを開始する方法は次のとおりです。
engine = create_engine( config.DATABASE_URI, pool_recycle = True )
metadata = MetaData()
db_session = scoped_session( sessionmaker( bind = engine, autoflush = True, autocommit = False ) )
私はこのプロジェクトで python と sqlalchemy の両方を学んだので、何かが欠けているかもしれませんが、これは私を夢中にさせています。何か案は?