blob: a9a1a4b0aaae7c01283c79976c691699f80edc1c (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
from typing import NamedTuple, Sequence
from clickhouse_connect.datatypes.base import ClickHouseType
class TableColumnDef(NamedTuple):
"""
Simplified ClickHouse Table Column definition for DDL
"""
name: str
ch_type: ClickHouseType
expr_type: str = None
expr: str = None
@property
def col_expr(self):
expr = f'{self.name} {self.ch_type.name}'
if self.expr_type:
expr += f' {self.expr_type} {self.expr}'
return expr
def create_table(table_name: str, columns: Sequence[TableColumnDef], engine: str, engine_params: dict):
stmt = f"CREATE TABLE {table_name} ({', '.join(col.col_expr for col in columns)}) ENGINE {engine} "
if engine_params:
for key, value in engine_params.items():
stmt += f' {key} {value}'
return stmt
|