-
-
Notifications
You must be signed in to change notification settings - Fork 116
/
test_datetime.py
50 lines (39 loc) · 1.53 KB
/
test_datetime.py
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
from datetime import datetime
from sqlalchemy import Column
from sqlalchemy.sql.ddl import CreateTable
from clickhouse_sqlalchemy import types, engines, Table
from tests.testcase import BaseTestCase, CompilationTestCase
from tests.util import with_native_and_http_sessions
class DateTimeCompilationTestCase(CompilationTestCase):
def test_create_table(self):
table = Table(
'test', CompilationTestCase.metadata(),
Column('x', types.DateTime, primary_key=True),
engines.Memory()
)
self.assertEqual(
self.compile(CreateTable(table)),
'CREATE TABLE test (x DateTime) ENGINE = Memory'
)
def test_create_table_with_timezone(self):
table = Table(
'test', CompilationTestCase.metadata(),
Column('x', types.DateTime('Europe/Moscow'), primary_key=True),
engines.Memory()
)
self.assertEqual(
self.compile(CreateTable(table)),
"CREATE TABLE test (x DateTime('Europe/Moscow')) ENGINE = Memory"
)
@with_native_and_http_sessions
class DateTimeTestCase(BaseTestCase):
table = Table(
'test', BaseTestCase.metadata(),
Column('x', types.DateTime, primary_key=True),
engines.Memory()
)
def test_select_insert(self):
dt = datetime(2018, 1, 1, 15, 20)
with self.create_table(self.table):
self.session.execute(self.table.insert(), [{'x': dt}])
self.assertEqual(self.session.query(self.table.c.x).scalar(), dt)