python - 自動 - クリアsqlalchemyリフレクションキャッシュ




sqlalchemy 既存 データベース (2)

新しく作成された新しいメタデータインスタンスを渡します。

https://code.i-harness.com

私はsqlalchemyの反射ツールを使用してTableオブジェクトを取得しています。 これらのテーブルは動的でテーブル/カラムは変更できるので、私はこれを行います。 使用しているコードは次のとおりです。

def getTableByReflection(self, tableName, metadata, engine):

    return Table(tableName, metadata, autoload = True, autoload_with = engine)

問題は、上記のコードを2回実行すると、列が変更されたかどうかにかかわらず同じ結果が返されるように見えることです。 mysession.refresh(mytable)を使用してリフレッシュしようとしましたが、テーブルがメタデータに添付されていないために失敗しました。それは理にかなっていますが、なぜキャッシュされた結果が表示されますか?

このテーブルについて忘れて、きちんと読み込めるようにメタデータ/エンジン/セッションに伝える方法はありますか?


上記のcodeapeのコメントのおかげで、私は構文を次のように変更することで問題を解決することができました:

def getTableByReflection(self, tableName, metadata, engine):

    return Table(tableName, MetaData(), autoload = True, autoload_with = engine)

毎回新しいMetaData()インスタンスを渡します。 これはおそらくパフォーマンスに影響しますが、私のアプリのこの部分では私にとっては大丈夫です。

すべてのクレジットカード







sqlalchemy