Skip to content

Commit 0535db7

Browse files
committed
Get rid of column_map
1 parent bafb6f7 commit 0535db7

File tree

5 files changed

+22
-29
lines changed

5 files changed

+22
-29
lines changed

tortoise/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
from tortoise.filters import get_m2m_filters
2929
from tortoise.log import logger
3030
from tortoise.models import Model, ModelMeta
31-
from tortoise.utils import generate_schema_for_client
3231
from tortoise.timezone import _reset_timezone_cache
32+
from tortoise.utils import generate_schema_for_client
3333

3434

3535
class Tortoise:

tortoise/backends/base/executor.py

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040

4141
EXECUTOR_CACHE: Dict[
4242
Tuple[str, Optional[str], str],
43-
Tuple[list, str, list, str, Dict[str, Callable], str, Dict[str, str]],
43+
Tuple[list, str, list, str, str, Dict[str, str]],
4444
] = {}
4545

4646

@@ -78,11 +78,6 @@ def __init__(
7878
self._prepare_insert_statement(columns_all, has_generated=False)
7979
)
8080

81-
self.column_map: Dict[str, Callable[[Any, Any], Any]] = {}
82-
for column in self.regular_columns_all:
83-
field_object = self.model._meta.fields_map[column]
84-
self.column_map[column] = field_object.to_db_value
85-
8681
table = self.model._meta.basetable
8782
basequery = cast(QueryBuilder, self.model._meta.basequery)
8883
self.delete_query = str(
@@ -95,7 +90,6 @@ def __init__(
9590
self.insert_query,
9691
self.regular_columns_all,
9792
self.insert_query_all,
98-
self.column_map,
9993
self.delete_query,
10094
self.update_cache,
10195
)
@@ -106,7 +100,6 @@ def __init__(
106100
self.insert_query,
107101
self.regular_columns_all,
108102
self.insert_query_all,
109-
self.column_map,
110103
self.delete_query,
111104
self.update_cache,
112105
) = EXECUTOR_CACHE[key]
@@ -186,15 +179,19 @@ def parameter(self, pos: int) -> Parameter:
186179
async def execute_insert(self, instance: "Model") -> None:
187180
if not instance._custom_generated_pk:
188181
values = [
189-
self.column_map[field_name](getattr(instance, field_name), instance)
182+
self.model._meta.fields_map[field_name].to_db_value(
183+
getattr(instance, field_name), instance
184+
)
190185
for field_name in self.regular_columns
191186
]
192187
insert_result = await self.db.execute_insert(self.insert_query, values)
193188
await self._process_insert_result(instance, insert_result)
194189

195190
else:
196191
values = [
197-
self.column_map[field_name](getattr(instance, field_name), instance)
192+
self.model._meta.fields_map[field_name].to_db_value(
193+
getattr(instance, field_name), instance
194+
)
198195
for field_name in self.regular_columns_all
199196
]
200197
await self.db.execute_insert(self.insert_query_all, values)
@@ -211,14 +208,18 @@ async def execute_bulk_insert(
211208
if instance._custom_generated_pk:
212209
values_lists_all.append(
213210
[
214-
self.column_map[field_name](getattr(instance, field_name), instance)
211+
self.model._meta.fields_map[field_name].to_db_value(
212+
getattr(instance, field_name), instance
213+
)
215214
for field_name in self.regular_columns_all
216215
]
217216
)
218217
else:
219218
values_lists.append(
220219
[
221-
self.column_map[field_name](getattr(instance, field_name), instance)
220+
self.model._meta.fields_map[field_name].to_db_value(
221+
getattr(instance, field_name), instance
222+
)
222223
for field_name in self.regular_columns
223224
]
224225
)
@@ -284,7 +285,7 @@ async def execute_update(
284285
if isinstance(instance_field, Expression):
285286
expressions[field] = instance_field
286287
else:
287-
value = self.column_map[field](instance_field, instance)
288+
value = self.model._meta.fields_map[field].to_db_value(instance_field, instance)
288289
values.append(value)
289290
values.append(self.model._meta.pk.to_db_value(instance.pk, instance))
290291
return (

tortoise/backends/sqlite/executor.py

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,9 @@
88
insensitive_posix_sqlite_regexp,
99
posix_sqlite_regexp,
1010
)
11-
from tortoise.fields import (
12-
BigIntField,
13-
IntField,
14-
SmallIntField,
15-
)
11+
from tortoise.fields import BigIntField, IntField, SmallIntField
1612
from tortoise.filters import insensitive_posix_regex, posix_regex
1713

18-
1914
# Conversion for the cases where it's hard to know the
2015
# related field, e.g. in raw queries, math or annotations.
2116
sqlite3.register_adapter(Decimal, str)

tortoise/queryset.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1195,8 +1195,6 @@ def _make_query(self) -> None:
11951195
self.resolve_ordering(self.model, table, self._orderings, self._annotations)
11961196

11971197
self.resolve_filters()
1198-
# Need to get executor to get correct column_map
1199-
executor = self._db.executor_class(model=self.model, db=self._db)
12001198
for key, value in self.update_kwargs.items():
12011199
field_object = self.model._meta.fields_map.get(key)
12021200
if not field_object:
@@ -1207,7 +1205,7 @@ def _make_query(self) -> None:
12071205
self.model._validate_relation_type(key, value)
12081206
fk_field: str = field_object.source_field # type: ignore
12091207
db_field = self.model._meta.fields_map[fk_field].source_field
1210-
value = executor.column_map[fk_field](
1208+
value = self.model._meta.fields_map[fk_field].to_db_value(
12111209
getattr(value, field_object.to_field_instance.model_field_name),
12121210
None,
12131211
)
@@ -1227,7 +1225,7 @@ def _make_query(self) -> None:
12271225
)
12281226
).term
12291227
else:
1230-
value = executor.column_map[key](value, None)
1228+
value = self.model._meta.fields_map[key].to_db_value(value, None)
12311229

12321230
self.query = self.query.set(db_field, value)
12331231

@@ -1838,7 +1836,6 @@ def _make_queries(self) -> List[Tuple[str, List[Any]]]:
18381836
)
18391837

18401838
self.resolve_filters()
1841-
executor = self._db.executor_class(model=self.model, db=self._db)
18421839
pk_attr = self.model._meta.pk_attr
18431840
source_pk_attr = self.model._meta.fields_map[pk_attr].source_field or pk_attr
18441841
pk = Field(source_pk_attr)
@@ -1848,7 +1845,7 @@ def _make_queries(self) -> List[Tuple[str, List[Any]]]:
18481845
case = Case()
18491846
pk_list = []
18501847
for obj in objects_item:
1851-
pk_value = executor.column_map[pk_attr](obj.pk, None)
1848+
pk_value = self.model._meta.fields_map[pk_attr].to_db_value(obj.pk, None)
18521849
field_obj = obj._meta.fields_map[field]
18531850
field_value = field_obj.to_db_value(getattr(obj, field), obj)
18541851
case.when(
@@ -1952,7 +1949,7 @@ async def _execute_many(self, insert_sql: str, insert_sql_all: str) -> None:
19521949
if instance._custom_generated_pk:
19531950
values_lists_all.append(
19541951
[
1955-
self._executor.column_map[field_name](
1952+
self.model._meta.fields_map[field_name].to_db_value(
19561953
getattr(instance, field_name), instance
19571954
)
19581955
for field_name in self._executor.regular_columns_all
@@ -1961,7 +1958,7 @@ async def _execute_many(self, insert_sql: str, insert_sql_all: str) -> None:
19611958
else:
19621959
values_lists.append(
19631960
[
1964-
self._executor.column_map[field_name](
1961+
self.model._meta.fields_map[field_name].to_db_value(
19651962
getattr(instance, field_name), instance
19661963
)
19671964
for field_name in self._executor.regular_columns

tortoise/timezone.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
from functools import lru_cache
21
import os
32
from datetime import datetime, time, tzinfo
3+
from functools import lru_cache
44
from typing import Optional, Union
55

66
import pytz

0 commit comments

Comments
 (0)