【问题标题】:Right way to implement pandas.read_sql with ClickHouse使用 ClickHouse 实现 pandas.read_sql 的正确方法
【发布时间】:2021-04-14 01:51:21
【问题描述】:

尝试实现pandas.read_sql函数。

我创建了一个 clickhouse 表格并填充了它:

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)

结果我希望得到一个包含 dateregion 列的数据框,但我得到的只是空数据框:

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

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

没有+native能解决吗?

【问题讨论】:

标签: pandas clickhouse


【解决方案1】:

有一个古老的问题https://github.com/xzkostyan/clickhouse-sqlalchemy/issues/10。还有一个提示假定在查询末尾添加 FORMAT TabSeparatedWithNamesAndTypes。所以初始化查询将如下所示:

select * 
from regions 
FORMAT TabSeparatedWithNamesAndTypes

【讨论】:

    猜你喜欢
    • 2020-09-06
    • 2018-08-23
    • 2019-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 2010-09-21
    • 1970-01-01
    相关资源
    最近更新 更多