2017-07-04 52 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' ...可能我在这里忽略了一些显而易见的/基本的东西。

一个也许相关的评论 - 我几年来一直是一个mysql管理员/用户和一个python用户,而我只是将我的脚趾浸入ORM世界。也许我只是很慢,但我发现SQL Alchemy的文档非常难以理解 - 似乎有山峰和文档的高峰(以及全新的词汇表使用)......或者我只是在考虑ORM完全错误的方式 - 所以任何基本指南等 - 不是从SQL炼金术 - 将不胜感激。也许是“SQL SQL用户的SQL方面”的东西 - 如果这样的事情存在..

+0

对于您的相关评论,SQLAlchemy是一个巨大的库,所以它遵循文档是巨大的。尝试从基本知识开始,如[对象关系教程](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__属性/对象。