私はピラミッドWebページのセットアップを持っています。 sql_list内のデータに基づいて自分のWebページを表示する扱い、その後SQLAlchemyクエリ - クエリはいつ実行されますか?
sql_list = do_a_query()
handle_a_post_request(request)
return dict(sql_list=sql_list)
def do_a_query():
request.db.query(WhatIAmLookingFor)
(マコが、私はそれは無関係だと思う)テンプレート - :ビューの一つは、このような何かを行います。
handle_a_post_request
機能では、ポストリクエストに基づいてセッションを変更し(コミット()を実行します)これらの変更は結果のページに表示されます。これは、クエリ自体がテンプレート内で呼び出されたときに実際に実行されるか実行されることを示唆しています。私はmakoを使用しているので、 -
% for row in sql_list:
<tr>
<td> ${row[0]} </td>
<td> ${row[1]} </td>
<td> ${row[2]} </td>
</tr>
私の結論は正しいですか?正確にsqlalchemyクエリが '実現済み'の場合、その時点以降のセッションの変更がクエリの '結果'に表示されなくなりますか?または、私の理解は根本的にどこかに欠陥がありますか?
私の関心事は、今後、do_a_query()
機能の変更(たとえば、表示する前にいくつかの前処理についてその結果を反復する)が私のWebページの動作を変更することです。もちろん、「正しい」答えはちょうどhandle_a_post_request()
を動かすことですが、まず何が起こっているのかを完全に理解したいと思います。
あなたは '' autoflush''を実行している可能性がありますので、これを見てください:http://stackoverflow.com/questions/4201455/sqlalchemy-whats-the-difference-between-flush-and-commit –
いいえ、間違いなくそのセットはありません。 –