0

マルチテナント Flask アプリケーションで Sqlalchemy を使用しており、新しいテナントが追加されたときにその場でテーブルを作成する必要があります。Table.create を使用して、新しい Postgres スキーマ内に (search_path の変更と共に) 個々のテーブルを作成しましたが、これは非常にうまく機能します。

私が見つけた制限は、現在のトランザクションで保留中のものがある場合、Table.create メソッドがブロックされることです。.create 呼び出しの直前にトランザクションをコミットする必要があります。そうしないと、ブロックされます。Ctrl-C できないため、Sqlalchemy でブロックされているようには見えません。プロセスを強制終了する必要があります。だから、それはPostgresのさらに下にあるものだと思います。

CREATE TABLE はトランザクションであり、ロールバックできるという他の回答を読んだので、これは機能していると思います。現在のエンジンで新しいトランザクションを開始し、それをテーブルの作成に使用しようとしましたが(現在のFlaskのものと比較して)、どちらも役に立ちませんでした。

初期のコミットなしでこれを機能させる方法を知っている人はいますか?

これは Python 2.7、Postgres 9.1、および Sqlalchemy 0.8.0b2 です。

4

1 に答える 1