【问题标题】:How do I get query results from QuestDB into a Pandas dataframe?如何从 QuestDB 获取查询结果到 Pandas 数据框中?
【发布时间】:2021-08-23 12:22:02
【问题描述】:

我正在使用 Python 中的 psycopg2 连接到 QuestDB 并运行 select * from my_table,但列名是序号:

import psycopg2
import pandas as pd

dataframe = pd.DataFrame()
try:
    connection = psycopg2.connect(user="myuser",
                                  password="mypassword",
                                  host="127.0.0.1",
                                  port="8812",
                                  database="qdb")
    cursor = connection.cursor()
    cursor.execute("SELECT * FROM my_table")

    dataframe = pd.DataFrame(cursor.fetchall())

except (Exception, psycopg2.Error) as error:
    print("Error while connecting to QuestDB", error)
finally:
    if (connection):
        cursor.close()
        connection.close()
        print("QuestDB connection closed")
print(dataframe)

没有列名的行如下所示:

                           0    1  2
0 2021-08-23 12:15:43.582771  100  1
1 2021-08-23 12:15:46.529379    1  2
2 2021-08-23 12:15:46.656823    1  2
3 2021-08-23 12:15:46.662040    1  2
4 2021-08-23 12:15:46.805505    1  2
5 2021-08-23 12:15:46.807359    1  2
6 2021-08-23 12:15:48.631560    1  2
7 2021-08-23 12:16:08.120285    6  3

【问题讨论】:

    标签: python pandas dataframe questdb


    【解决方案1】:

    问题是fetchall获取游标中每一行的结果,要正确返回表结果,请使用read_sql_query

    import psycopg2
    import pandas as pd
    
    dataframe = pd.DataFrame()
    try:
        connection = psycopg2.connect(user="admin",
                                      password="quest",
                                      host="127.0.0.1",
                                      port="8812",
                                      database="qdb")
        cursor = connection.cursor()
        dataframe = pd.read_sql_query("select * from my_table",connection)
    
    except (Exception, psycopg2.Error) as error:
        print("Error while connecting to QuestDB", error)
    finally:
        if (connection):
            cursor.close()
            connection.close()
            print("QuestDB connection closed")
    print(dataframe)
    

    这会返回:

                        timestamp  event  origin
    0  2021-08-23 12:15:43.582771    100       1
    1  2021-08-23 12:15:46.529379      1       2
    2  2021-08-23 12:15:46.656823      1       2
    3  2021-08-23 12:15:46.662040      1       2
    4  2021-08-23 12:15:46.805505      1       2
    5  2021-08-23 12:15:46.807359      1       2
    6  2021-08-23 12:15:48.631560      1       2
    7  2021-08-23 12:16:08.120285      6       3
    8  2021-08-23 12:16:58.080873      6       3
    9  2021-08-23 12:16:58.081986      6       3
    10 2021-08-23 12:16:58.084083      1       3
    

    【讨论】:

      猜你喜欢
      • 2017-08-26
      • 2017-04-25
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 2018-12-06
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多