如何在python中获取SQL查询的表列名/标题

问题描述 投票:2回答:4

我有使用熊猫存储在SQLITE数据库中的pandas数据框中的数据。当我尝试查询其中的表时,我可以获得结果,但没有列名。有人可以引导我。

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)

我需要怎么做才能以表格形式显示具有列名的结果

python sql pandas cursor ipython-notebook
4个回答
9
投票

在符合DB-API 2.0的客户端中,cursor.description(<name>, <type_code>, <display_size>, <internal_size>, <precision>, <scale>, <null_ok>)形式的7个项目的序列,每列一个,如here所述。注意,如果execute语句的结果为空,则description将为None

如果要创建列名的列表,则可以像这样使用列表理解:column_names = [i[0] for i in cursor.description],然后根据需要对其进行处理。

或者,您可以将连接对象的row_factory参数设置为可为列名提供结果的内容。找到了一个基于字典的SQLite行工厂示例here,您可以在下面看到有关sqlite3.Row类型的讨论。


4
投票

尝试Pandas .read_sql(),我现在无法检查,但应该是这样的:

 pd.read_sql( Q , connection)

4
投票

我的英语不好我写了一个示例,看到了,使用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();

0
投票

步骤1:选择您的引擎,例如pyodbc,SQLAlchemy等

步骤2:建立连接cursor = connection.cursor()

步骤3:执行SQL语句cursor.execute("Select * from db.table where condition=1")

步骤4:从连接变量描述中提取标题

headers = [i[0] for i in cursor.description]
print(headers)
© www.soinside.com 2019 - 2024. All rights reserved.