2017-07-04 21 views
0

簡単な質問 - SQL Alchemyのautomap拡張を使用して、既存のmysqlデータベースのスキーマ内のテーブルの列を一覧表示するにはどうすればよいですか?SQL Alchemyを使用して既存のスキーマからテーブルを列挙する

これは私が(ここではドキュメントに従うことをしよう: Automap):しようとされているものです

metadata = MetaData() 
metadata.reflect(engine) 

Base = automap_base(metadata=metadata) 
Base.prepare() 

この時点から、私はすべてのテーブル(例えばBase.classes.table1Base.classes.table2など)を「見る」ことができ、特定のテーブルの列を各テーブルの属性として「見る」ことができます(例:Base.classes.table1.column1Base.classes.column2)。

質問は基本的にテーブルの列を列挙する簡単な方法はありますか? (または実際にはスキーマのテーブル?)..類似のものSHOW COLUMNS IN 'table1' ...多分私はここに明らかな/基本的なsomethingsが不足しています。

おそらく関連するコメント - 私は数年前からMySQL管理者/ユーザーとPythonユーザーの両方でしたが、ORMの世界に自分の足元を浸しています。おそらく私は遅いですが、私はSQL Alchemyのドキュメントがかなり侵入不可能であることを発見しています - ドキュメントの山と山があるように見えます(そして、全く新しい語彙を使用しています)...または、おそらく私はORMについて考えています完全に間違った方法 - どのような基本的なガイドなど - それはSQLの錬金術からではない - をいただければ幸いです。おそらく、 "SQLユーザーのためのSQL錬金術"の行に沿った何か - そのようなものが存在する場合。

+0

関連するコメントには、SQLAlchemyは巨大なライブラリなので、ドキュメントが膨大であることになります。最初に[Object Relational Tutorial](http://docs.sqlalchemy.org/en/latest/orm/tutorial.html)のような基礎から始めて、有用なサブセットを最初に教えてください。 –

+0

あなたが見ているのはテーブルではなく、自動的に生成されたマップされたクラスです。これは 'Base.classes'のヒントです。 –

答えて

1

答えは基本的にIljaEveriläの質問リンクに含まれています。 は重複としてマークします - しかし、ここで私の質問に直接答えである:

Base.classes.table1.__table__.columnsは(メソッドのほんの一握りを持っているSQL錬金術ImmutableColumnCollectionオブジェクト、など)の列の情報を提供します。

これらの方法の一つは、具体的には、列名のリストが得られます:

Base.classes.table1.__table__.columns.keys()

を...私が行方不明になった基本的には主なものは、「魔法」__table__属性/目的でした。

関連する問題