MCPcopy
hub / github.com/tortoise/tortoise-orm / _make_queries

Method _make_queries

tortoise/queryset.py:1949–1991  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

1947 self._queries: list[QueryBuilder] = []
1948
1949 def _make_queries(self) -> list[tuple[str, list[Any]]]:
1950 table = self.model._meta.basetable
1951 self.query = self._db.query_class.update(table)
1952 if self.capabilities.support_update_limit_order_by and self._limit:
1953 self.query._limit = self.query._wrapper_cls(self._limit)
1954 self.resolve_ordering(
1955 model=self.model,
1956 table=table,
1957 orderings=self._orderings,
1958 annotations=self._annotations,
1959 )
1960
1961 self.resolve_filters()
1962 pk_attr = self.model._meta.pk_attr
1963 source_pk_attr = self.model._meta.fields_map[pk_attr].source_field or pk_attr
1964 pk = Field(source_pk_attr)
1965 for objects_item in chunk(self._objects, self._batch_size):
1966 query = copy(self.query)
1967 for field in self.fields:
1968 case = Case()
1969 pk_list = []
1970 for obj in objects_item:
1971 pk_value = self.model._meta.fields_map[pk_attr].to_db_value(obj.pk, None)
1972 field_obj = obj._meta.fields_map[field]
1973 field_value = field_obj.to_db_value(getattr(obj, field), obj)
1974 case.when(
1975 pk == pk_value,
1976 (
1977 Cast(
1978 self.query._wrapper_cls(field_value),
1979 field_obj.get_for_dialect(
1980 self._db.schema_generator.DIALECT, "SQL_TYPE"
1981 ),
1982 )
1983 if self._db.schema_generator.DIALECT == "postgres"
1984 else self.query._wrapper_cls(field_value)
1985 ),
1986 )
1987 pk_list.append(pk_value)
1988 query = query.set(field, case)
1989 query = query.where(pk.isin(pk_list))
1990 self._queries.append(query)
1991 return [query.get_parameterized_sql() for query in self._queries]
1992
1993 async def _execute_many(self, queries_with_params: list[tuple[str, list[Any]]]) -> int:
1994 count = 0

Callers 2

__await__Method · 0.95
sqlMethod · 0.95

Calls 10

chunkFunction · 0.90
FieldClass · 0.85
CaseClass · 0.85
updateMethod · 0.80
resolve_orderingMethod · 0.80
resolve_filtersMethod · 0.80
get_for_dialectMethod · 0.80
setMethod · 0.80
get_parameterized_sqlMethod · 0.80
to_db_valueMethod · 0.45

Tested by

no test coverage detected