非常に複雑な単体テスト環境では、メタデータに含まれるテーブルを動的に変更したいと考えています。そこからのテーブルの削除は、.remove(table)
またはを使用してサポートされてい.clear()
ます。しかし、そのようなテーブルを後で再追加するにはどうすればよいでしょうか?
MetaData にメソッドがありますが、_add_table(name, schema)
これは正式な方法ではないようです。また、Table._set_parent(metadata)
「内部メソッドを使用する」ルートに行かなければならない場合は、より適切なようです。
Table.tometadata(metadata)
また、新しいメタデータにアタッチされた新しいテーブル インスタンスを作成するものもあります。したがって、完全な新しいメタデータを作成し、「今必要な」すべてのテーブルをアタッチすることができました。ただし、それは、残りのすべてのコードが、新しいメタデータに接続された新しいテーブル インスタンスについて知る必要があることを意味します。この道は行きたくない。
更新: 現在、サブプロセス (隔離された環境) でのみテーブルをロードする fork/multiprocessing を検討しているため、そのサブプロセスのみが「汚染」され、次のテストが損なわれることはありません。完全を期すためにここでこれに注意しています。主な質問とは厳密には関係ありませんが、この質問を見つけた他の人に役立つかもしれません。