【问题标题】:How to list columns name from any SQL query如何从任何 SQL 查询中列出列名
【发布时间】:2021-05-03 01:45:10
【问题描述】:

使用 SQL Alchemy,我想知道是否可以从任何 SQL 查询中获取所有列的列表。

例如,如果我调用这个查询:

SELECT * FROM users;

我需要所有结果,还需要 users 表中所有列的列表。

我知道我可以点击信息架构表,但我的问题也会影响任何类型的查询,例如:

SELECT u.*, f.name, f.size FROM users u LEFT JOIN files f ON f.user_id = u.id;

我在 SQL Alchemy 中看到了这个选项,[column_description][1],但我不知道它是否只适用于 ORM 样式;我使用的是非 ORM 样式(我将直接编写查询)。

【问题讨论】:

  • 数据库应用程序中的一般最佳实践永远不要使用Select *,因为您知道您想要哪些字段,因为您必须知道如何处理它们,然后当通过添加字段更改数据库时它不会影响您的代码,数据库文件名也不太可能是您的用户所称的信息。所以我想问一下您在这里尝试开发的用户需求是什么。
  • 我正在玩构建 PhpMyAdmin 的替代方案。我无法控制查询中将写入的内容,而且我很确定这种查询会被多次写入。

标签: sql sqlalchemy


【解决方案1】:

使用ResultProxy.keys():

sql = "SELECT * FROM users;"
res_proxy = session.execute(sql)
column_names = res_proxy.keys()

不过,我同意 Mark 的观点,即不应将 SELECT * 用作一般规则。

【讨论】:

  • 感谢您的提示。至于SELECT *,看我在他之后的评论;)
  • 看到评论,不知道 PhpMyAdmin 是什么以及它是如何工作的 :)。我相信你有充分的理由。祝项目顺利!
猜你喜欢
  • 2020-10-24
  • 1970-01-01
  • 2021-08-11
  • 1970-01-01
  • 2016-06-08
  • 2019-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多