用ClickHouse实现pandas.read_sql的正确方法



尝试实现pandas.read_sql函数。

我创建了一个点击室表格,并填写了它:

create table regions
(
date DateTime Default now(),
region String
)
engine = MergeTree()
PARTITION BY toYYYYMM(date)
ORDER BY tuple()
SETTINGS index_granularity = 8192;
insert into regions (region) values ('Asia'), ('Europe')

然后python代码:

import pandas as pd 
from sqlalchemy import create_engine

uri = 'clickhouse://default:@localhost/default'
engine = create_engine(uri)
query = 'select * from regions'
pd.read_sql(query, engine)

因此,我希望得到一个列为日期区域的数据帧,但我得到的只是空数据帧:

Empty DataFrame
Columns: [2021-01-08 09:24:33, Asia]
Index: []

UPD。定义clickhouse+native解决了这个问题。

如果没有+本机,它能解决吗?

存在加密问题https://github.com/xzkostyan/clickhouse-sqlalchemy/issues/10.还有一个提示,假设在查询结束时添加FORMAT TabSeparatedWithNamesAndTypes。因此init查询将如下所示:

select * 
from regions 
FORMAT TabSeparatedWithNamesAndTypes

最新更新