0

(我认为)简单的问题 - 我如何使用 SQL Alchemy 自动映射扩展来列出模式中表的列 - 重要的是 - 现有 mysql 数据库?

这是我一直在尝试的(尝试在此处关注文档: 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 Alchemy - 将不胜感激。也许类似于“SQL 用户的 SQL 炼金术” - 如果存在这样的事情..

4

1 回答 1

2

答案基本上包含在 Ilja Everilä 的问题链接中。将标记为重复 - 但这是我的问题的直接答案:

Base.classes.table1.__table__.columns 将为您提供列信息(作为 SQL AlchemyImmutableColumnCollection对象,它有一些方法)。

其中一种方法将产生列名列表,具体而言:

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

...基本上我缺少的主要是“魔法”__table__属性/对象。

于 2017-07-04T13:11:18.123 回答