2015-12-11 204 views
0

我有使用Python存儲在SQLITE數據庫中的pandas數據框中的數據。當我試圖查詢它裏面的表時,我能夠得到結果,但沒有列名。有人能指導我嗎?如何獲取python中SQL查詢的表列名稱/標題

sql_query = """Select date(report_date), insertion_order_id, sum(impressions), sum(clicks), (sum(clicks)+0.0)/sum(impressions)*100 as CTR 
      from RawDailySummaries 
      Group By report_date, insertion_order_id 
      Having report_date like '2014-08-12%' """ 

cursor.execute(sql_query) 
query1 = cursor.fetchall() 

for i in query1: 
    print i 

下面是輸出,我得到

(u'2014-08-12', 10187, 2024, 8, 0.3952569169960474) 
(u'2014-08-12', 12419, 15054, 176, 1.1691244851866613) 

什麼我需要做的列名,以顯示在一個表格形式的結果

回答

2

嘗試熊貓.read_sql(),我目前無法檢查,但它應該是這樣的:

pd.read_sql(Q , connection) 
+0

是的,工作wll – user1761806

2

在符合DB-API 2.0的客戶端中,cursor.description是形式爲(<name>, <type_code>, <display_size>, <internal_size>, <precision>, <scale>, <null_ok>)的7個項目序列的序列,每個列一個,如here所述。如果執行語句的結果爲空,則注意description將爲None

如果你想創建一個列名稱列表,你可以使用像這樣的列表理解:column_names = [i[0] for i in cursor.description]然後做任何你想做的事情。

或者,您可以將連接對象的row_factory參數設置爲爲列名提供結果的東西。 SQLite的基於字典的行工廠的示例發現爲here,您可以在下面看到關於sqlite3.Row類型的討論。

0

我的英文很差 我寫了一個示例,看看它,使用cx_Oracle,但是mysql和它一樣。

import cx_Oracle 


def test_oracle(): 
    connection = cx_Oracle.connect('user', 'password', 'tns') 
    try: 
     cursor = connection.cursor() 
     cursor.execute('SELECT day_no,area_code ,start_date from dic.b_td_m_area where rownum<10') 

     #only print head 
     title = [i[0] for i in cursor.description] 
     print(title) 

     # column info 
     for x in cursor.description: 
      print(x) 

    finally: 
     cursor.close() 


if __name__ == "__main__": 
    test_oracle();