(
self,
insert_sql: str,
insert_sql_all: str,
effective_columns: list[str],
effective_columns_all: list[str],
)
| 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) |
no test coverage detected