2012-07-22 63 views
1

使用SQL Alchemy,我想知道是否可以從任何SQL查詢中獲取所有列的列表。如何列出任何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鍊金術,[column_description][1]這個選項,但我不知道是否它僅適用於ORM風格;我使用非ORM樣式(我將直接寫入查詢)。

感謝您的幫助!

+1

數據庫應用程序中的一般最佳做法是從不使用'Select *',因爲您知道您想要哪些字段,因爲您必須知道如何處理它們,然後通過添加字段來更改數據庫時不會影響代碼,數據庫提交的名稱也不太可能是您的用戶所稱的信息。所以我會問你在這裏試圖開發的用戶需求是什麼。 – Mark 2012-07-22 20:33:56

+0

我正在打造替代PhpMyAdmin。我無法控制將在查詢中寫入的內容,並且我非常確定這種查詢將被寫入多次。 – 2012-07-23 06:32:22

回答

2

使用ResultProxy.keys()

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

然而,我與馬克同意,不應該使用SELECT *作爲一般規則。

+0

感謝您的提示。至於'SELECT *',看到我的評論之後;) – 2012-07-23 07:54:48

+0

看到了評論,不知道什麼PhpMyAdmin是,以及它是如何工作的:)。我相信你有很好的理由。項目祝你好運! – van 2012-07-23 07:56:48

相關問題