ClickHouse Python Driver with native interface support
Branch: master
Clone or download
mitsuhiko and xzkostyan Fix BufferReader.read_strings mishandling feeding from buffer (#72)
* Fix BufferReader.read_strings mishandling feeding from buffer

This solves an issue where the code would incorrectly read past the
number of read characters that came from the network stream.
Latest commit 479dae1 Feb 14, 2019

README.rst

ClickHouse Python Driver

https://coveralls.io/repos/github/mymarilyn/clickhouse-driver/badge.svg?branch=master https://travis-ci.org/mymarilyn/clickhouse-driver.svg?branch=master

ClickHouse Python Driver with native (TCP) interface support.

Asynchronous wrapper is available here: https://github.com/mymarilyn/aioch

Features

  • External data for query processing.
  • Query settings.
  • Compression support.
  • TLS support (since server version 1.1.54304).
  • Types support:
    • Float32/64
    • [U]Int8/16/32/64
    • Date/DateTime('timezone')
    • String/FixedString(N)
    • Enum8/16
    • Array(T)
    • Nullable(T)
    • UUID
    • Decimal
  • Query progress information.
  • Block by block results streaming.
  • Reading query profile info.
  • Receiving server logs.

Usage

>>> from clickhouse_driver import Client
>>>
>>> client = Client('localhost')
>>>
>>> client.execute('SHOW TABLES')
[('test',)]
>>>
>>> client.execute('DROP TABLE IF EXISTS test')
[]
>>>
>>> client.execute('CREATE TABLE test (x Int32) ENGINE = Memory')
[]
>>>
>>> client.execute(
...     'INSERT INTO test (x) VALUES',
...     [{'x': 100}]
... )
>>> client.execute('INSERT INTO test (x) VALUES', [[200]])
>>>
>>> client.execute(
...     'INSERT INTO test (x) '
...     'SELECT * FROM system.numbers LIMIT %(limit)s',
...     {'limit': 3}
... )
[]
>>>
>>> client.execute('SELECT sum(x) FROM test')
[(303,)]

Documentation

Documentation is available at https://clickhouse-driver.readthedocs.io.

License

ClickHouse Python Driver is distributed under the MIT license.