-
-
Notifications
You must be signed in to change notification settings - Fork 160
Expand file tree
/
Copy pathtest_insert.py
More file actions
78 lines (63 loc) · 2.42 KB
/
Copy pathtest_insert.py
File metadata and controls
78 lines (63 loc) · 2.42 KB
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from sqlalchemy import Column, literal_column, select
from clickhouse_sqlalchemy import types, Table, engines, sql
from tests.testcase import NativeSessionTestCase
from tests.util import require_server_version
class InsertTestCase(NativeSessionTestCase):
@require_server_version(19, 3, 3)
def test_insert(self):
table = Table(
't', self.metadata(),
Column('x', types.String, primary_key=True),
engines.Log()
)
with self.create_table(table):
query = table.insert().values(x=literal_column("'test'"))
self.session.execute(query)
rv = self.session.execute(select(table.c.x)).scalar()
self.assertEqual(rv, 'test')
@require_server_version(21, 1, 3)
def test_insert_map(self):
table = Table(
't', self.metadata(),
Column('x', types.Map(types.String, types.Int32),
primary_key=True),
engines.Memory()
)
with self.create_table(table):
dict_map = dict(key1=1, Key2=2)
x = [
{'x': dict_map}
]
self.session.execute(table.insert(), x)
rv = self.session.execute(select(table.c.x)).scalar()
self.assertEqual(rv, dict_map)
@require_server_version(19, 3, 3)
def test_insert_iterator(self):
table = Table(
't', self.metadata(),
Column('x', types.String, primary_key=True),
engines.Log()
)
def generator():
yield ["foo"]
yield ["bar"]
with self.create_table(table):
query = sql.insert(table).values_iterator([table.c.x], generator())
self.session.execute(query)
result = list(self.session.execute(select(table.c.x)))
self.assertListEqual(result, [('foo',), ('bar',)])
@require_server_version(19, 3, 3)
def test_insert_iterator_list(self):
table = Table(
't', self.metadata(),
Column('x', types.String, primary_key=True),
engines.Log()
)
with self.create_table(table):
query = sql.insert(table).values_iterator(
[table.c.x],
[["foo"], ["bar"]]
)
self.session.execute(query)
result = list(self.session.execute(select(table.c.x)))
self.assertListEqual(result, [('foo',), ('bar',)])