NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #2755 most downloaded on PyPI
Simple ClickHouse SQLAlchemy Dialect
Last release 1 years ago
31 Jul 2025
Ships fairly regularly
a new release about every 3 months
Nearly every release is documented
notes for 34 of 36 stable releases
Nothing withdrawn
no release was ever pulled
10 years old
36 releases · first in 2017
Version bumped to 0.3.2
Version bumped to 0.3.2
quantile and quantileIf functions. Pull request #303 by aronbierbaum.AggregateFunction and SimpleAggregateFunction aggregate types. Pull request #297 by aronbierbaum.One column per quarter.
Version bumped to 0.3.1
Version bumped to 0.3.1
SETTINGS clause. Pull request #292 by limonyellow.DISTINCT ON clause. Pull request #293 by aronbierbaum. Solves issue #234.select(...).join(...) query generation. Pull request #284 by Net-Mist.max_row_buffer. Pull request #287 by akurdyukov. Solves issue #286.match function case. Pull request #283 by bader-tayeb.replace_existing=True for alembic_version.version_num column. Pull request #275 by leemurus. Solves issue #288.Version bumped to 0.3.0
Version bumped to 0.3.0
Nothing published for this version
Nothing published for this version
Version bumped to 0.2.7
Version bumped to 0.2.7
Version bumped to 0.2.6
Version bumped to 0.2.6
Version bumped to 0.2.5
Version bumped to 0.2.5
_reflect_table alembic argsPull request #249 by 9bany. Solves issue #250.[Native] DateTime('timezone'). Solves issue #230.
asynch. Pull request #214 by randomowo.ILIKE clause compilation. Pull request #229 by howbownotnow.MATCH clause via Column.regexp_match. Pull request #221 by TeddyCr.after_drop and before_drop events while dropping table. Pull request #246 by vanchaxy. Solves issue #245.SAMPLE with ARRAY JOIN. Pull request #241 by dpaluch-piw. Solves issue #45.[U]Int128/256 types. Pull request #184 by akolov. Solves issue #176.
WITH CUBE/WITH ROLLUP modifiers for GROUP BY. Pull request #210 by reflection.FULL JOIN sql generation. Pull request #144 by poofeg. Solves issue #193.CASE without ELSE clause.has* functions. Solves issue #205.ischema_names type converters. Pull request #216 by AntonFriberg. Solves issue #215.Table and column comments creation and reflection. Solves issue #149.
Add supports_statement_cache = True. Solves issue #169.
supports_statement_cache = True. Solves issue #169.cache_ok = True for IP types.text() and pure strings in engine parameters handling. Solves issue #173.CREATE and DROP Materialized views. Solves issue #177.With changes from 0.1.9 and 0.1.10.
LEFT ARRAY JOIN clause. Pull request #167 by Fozar.
Version bumped to 0.1.12
Version bumped to 0.1.12
Version bumped to 0.1.11
Version bumped to 0.1.11
Documentation on Read the Docs: https://clickhouse-sqlalchemy.readthedocs.io
AFTER clause rendering in ADD COLUMN..create().Engine is subclass of Constraint now.ReplicatedReplacingMergeTree reflection. Solves issue #164.
Tuple and Map types. Pull request #163 by joelynch.
EXISTS and DESCRIBE table quoting.replace. Pull request #166 by cwurm.literal_column values. Solves issue #133.Support for distinctness comparisons (is_distinct_from / isnot_distinct_from). Pull request #144 by wlhjason. Solves issue #143.
is_distinct_from / isnot_distinct_from). Pull request #144 by wlhjason. Solves issue #143.AFTER clause in ALTER TABLE ... ADD COLUMN. Pull request #153 by eivasch.DESCRIBE TABLE default_expression. Pull request #153 by eivasch.[HTTP] Optional custom requests.Session. Pull request #119 by carlosefr.
requests.Session. Pull request #119 by carlosefr.verify flag when parsing DSN. Pull request #126 by yhvicey.MATERIALIZED and ALIAS column options.
MATERIALIZED and ALIAS column options.LIMIT BY clause support. Pull request #97 by ods.TTL param for *MergeTree engines. Pull request #111 by aamalev.DEFAULT column option.PARTITION BY.uuid1 with uuid4 for automatic query_id generation. Solves issue #99.JOIN withUSING clause.VALUES clause check for (%s)-templates.sqlalchemy.Boolean as UInt8 instead of BOOLEAN. Solves issue #93.JOIN clause rendering. Solves issue #108.if_exists and on_cluster AttributeError on table drop. Pull request #94 by vmarkovtsev.
if_exists and on_cluster AttributeError on table drop. Pull request #94 by vmarkovtsev.Engines: ReplicatedReplacingMergeTree, VersionedCollapsingMergeTree, ReplicatedVersionedCollapsingMergeTree. Solves issue #70.
ALTER DELETE. Pull request #81 by sdrenn. Solves issue #65.ALTER UPDATE. Pull request #82 by sdrenn. Solves issue #65.FINAL clause. Pull request #79 by sdrenn.CODEC column option. Pull request #89 by athre0z.IN and NOT IN comparators. Pull request #91 by AchilleAsh.sample keyword argument changed to sample_by in *MergeTree.version_col, keyword argument changed to version in ReplacingMergeTree.VALUES clause.fetchone elements order. Solves issue #77.Generic Table reflection in case of autoload=True.
Table reflection in case of autoload=True.get_schema_names.Set default strictness to INNER for join.
INNER for join.PARTITION BY clause now accepts functions.Enum without explicit size. Pull request #69 by ei-grad.
clickhouse-driver by using querystring in DSN.types_check to clickhouse-driver via execution_options.INSERT. Returning rows count from INSERT FROM SELECT is not supported.FULL parameter in JOIN rendering. Pull request #50 by PiwikPRO.ARRAY JOIN clause. Pull request #44 by aCLr.UnicodeDecodeError. Pull request #51 by aminought.fetchmany and fetchall.strictness (ANY/ALL), distribution (GLOBAL) parameters. Pull request #53 by aCLr.Self-signed certificate support. Pull request #46 by rrockru.
comment_expression in DESCRIBE TABLE results during reflection (in ClickHouse server >= 18.15).ON CLUSTER clause in CREATE TABLE, DROP TABLE.
ON CLUSTER clause in CREATE TABLE, DROP TABLE.Streaming support via yield_per.
yield_per.Handling NULL values in arrays as strings. Pull request #23 by Joozty.
Schema names as databases support. Pull request #16 by AchilleAsh.
JOIN clause support via tuple_().
JOIN clause support via tuple_().Additional engines: AggregatingMergeTree, GraphiteMergeTree, ReplacingMergeTree, ReplicatedMergeTree, ReplicatedCollapsingMergeTree, ReplicatedAggrega
SAMPLE clause.extract('year', x) alias to toYear(x)/toMonth(x)/toDayOfMonth(x). Pull request #2 by gribanov-d.
extract('year', x) alias to toYear(x)/toMonth(x)/toDayOfMonth(x). Pull request #2 by gribanov-d.CREATE TABLE.WITH TOTALS clause support for GROUP BY.execution_options.count(expr) rendering. Pull request #3 by gribanov-d.Native (TCP) interface support.
ELSE clause is required in CASE.Engine declaration support in __table_args__
__table_args__DROP TABLE IF EXISTS clause.clickhouse://.INSERT INTO in one request.Your coding agent can read these notes before it upgrades. Set up the MCP server →