Pandas Clickhouse不返回列标题

Pandas Clickhouse不返回列标题,pandas,sqlalchemy,clickhouse,Pandas,Sqlalchemy,Clickhouse,我正试图从clickhouse中获取一些关系数据,并在pandas中使用。它可以工作,但是pd.read\u sql\u查询返回dataframe,其中列名是第一行的值。相反,我希望看到列的名称和它们在关系表中的名称一样 我用Postgress做了同样的尝试,效果很好 cheng = create_engine('clickhouse://mylogin:mypassG@domain.my:PORT/schema') qry2 = '''select * from myschema.mytabl

我正试图从clickhouse中获取一些关系数据,并在pandas中使用。它可以工作,但是pd.read\u sql\u查询返回dataframe,其中列名是第一行的值。相反,我希望看到列的名称和它们在关系表中的名称一样

我用Postgress做了同样的尝试,效果很好

cheng = create_engine('clickhouse://mylogin:mypassG@domain.my:PORT/schema')
qry2 = '''select * from myschema.mytable order by a_date desc limit 10'''

dt = pd.read_sql_query(qry, cheng)
dt


返回的dataframe列的标题包含从DB返回的第一行的值。我希望看到的是列名。

请查看此python包:


您可以使用clickhouse驱动程序在数据框中获取列标签。示例如下所示

from clickhouse_driver import Client
import pandas
client = Client('localhost')
result, columns = client.execute('SELECT * FROM iris', 
                                 {'species': "Iris-setosa"},
                                 with_column_types=True)
df = pandas.DataFrame(result, columns=[tuple[0] for tuple in columns])
df.tail()
您将在df.tail()输出中看到标签

看看这个问题:


我无法在最新版本的模块上重现此行为:

sqlalchemy==1.3.16
sqlalchemy clickhouse==0.1.5.0
熊猫==1.0.3
此代码:

将熊猫作为pd导入
从sqlalchemy导入创建引擎
引擎=创建引擎('clickhouse://default:@本地主机/测试')
查询='从呼叫中心选择*
dt=pd.read\u sql\u查询(查询,引擎)
打印(dt)
返回:

cc\u呼叫中心\u sk cc\u呼叫中心\u id。。。cc\u gmt\u抵消cc\u税收\u百分比
0 1 AAAAAAAAAAAAAA-5.0              0.11
1 2 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-5.0              0.12
2 3 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-5.0              0.01
3 4 AAAAA AAAAA-5.0              0.05
4 5 AAAAA AAAAA-5.0              0.12
5 6 AAAAA AAAAA-5.0              0.11
[6行x 31列]
PyCharm数据帧视图看起来也不错:

from clickhouse_driver import Client
import pandas
client = Client('localhost')
result, columns = client.execute('SELECT * FROM iris', 
                                 {'species': "Iris-setosa"},
                                 with_column_types=True)
df = pandas.DataFrame(result, columns=[tuple[0] for tuple in columns])
df.tail()