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

Method _execute_many

tortoise/queryset.py:2147–2193  ·  view source on GitHub ↗
(
        self,
        insert_sql: str,
        insert_sql_all: str,
        effective_columns: list[str],
        effective_columns_all: list[str],
    )

Source from the content-addressed store, hash-verified

2145 return insert_query.get_sql(), insert_query_all.get_sql()
2146
2147 async def _execute_many(
2148 self,
2149 insert_sql: str,
2150 insert_sql_all: str,
2151 effective_columns: list[str],
2152 effective_columns_all: list[str],
2153 ) -> None:
2154 fields_map = self.model._meta.fields_map
2155 for instance_chunk in chunk(self._objects, self._batch_size):
2156 values_lists_all = []
2157 values_lists = []
2158 count_default_all = 0
2159 count_default = 0
2160 for instance in instance_chunk:
2161 if instance._custom_generated_pk:
2162 if effective_columns_all:
2163 values_lists_all.append(
2164 [
2165 fields_map[field_name].to_db_value(
2166 getattr(instance, field_name), instance
2167 )
2168 for field_name in effective_columns_all
2169 ]
2170 )
2171 else:
2172 count_default_all += 1
2173 else:
2174 if effective_columns:
2175 values_lists.append(
2176 [
2177 fields_map[field_name].to_db_value(
2178 getattr(instance, field_name), instance
2179 )
2180 for field_name in effective_columns
2181 ]
2182 )
2183 else:
2184 count_default += 1
2185 if values_lists_all:
2186 await self._db.execute_many(insert_sql_all, values_lists_all)
2187 if values_lists:
2188 await self._db.execute_many(insert_sql, values_lists)
2189 # When all columns are omitted, execute DEFAULT VALUES individually
2190 for _ in range(count_default_all):
2191 await self._db.execute_insert(insert_sql_all, [])
2192 for _ in range(count_default):
2193 await self._db.execute_insert(insert_sql, [])
2194
2195 def __await__(self) -> Generator[Any, None, None]:
2196 self._choose_db_if_not_chosen(True)

Callers 1

__await__Method · 0.95

Calls 4

chunkFunction · 0.90
to_db_valueMethod · 0.45
execute_manyMethod · 0.45
execute_insertMethod · 0.45

Tested by

no test coverage detected