1

Flask-SQLAlchemy で予期しない動作が見られますが、何が起こっているのかわかりません:

MySQL Workbench や Sequel Pro などを使用してレコードを変更すると、実行中のアプリ (Apache の WSGI で実行されているか、コマンド ラインから実行されているかに関係なく) が変更を認識しません。WSGI ファイルをタッチするか、(コマンド ラインで) リロードしてアプリをリロードすると、変更されたレコードが表示されます。対話型シェルでクエリを実行してこれを確認しましたがall()、同じです。シェルを終了して再起動するまで変更はありません。ここで信じられないほど明白な何かが欠けているように感じます-それは単一のテーブルであり、結合などではありません.-MySQL 5.5.19 と 2.7.3 で SQLA 0.7.7 を実行しています

4

1 に答える 1

1

アプリの SELECT はおそらく独自のトランザクション/セッション内にあるため、別のセッション (MySQL Workbench 接続など) によって送信された変更は、SELECT にはまだ表示されません。これは、mysql の一般ログを有効にするか、create_engine(...) 定義で「echo: false」を設定することで簡単に確認できます。明示的なコミットまたはロールバックが必要な SET AUTOCOMMIT = 0 モードで SQLAlchemy セッションを開始している可能性があります (再起動/リロードすると、Flask-SQLAlchemy が自動的に実行します)。autocommit=true モードでセッションを開始するか、SELECT を呼び出す前に明示的なコミット/ロールバックを適用してみてください。

于 2013-03-04T04:03:07.927 に答える