Skip to content

Commit 6f79635

Browse files
author
Micheal Gendy
committed
improve readability
1 parent 592ebba commit 6f79635

File tree

1 file changed

+19
-25
lines changed

1 file changed

+19
-25
lines changed

orm/models.py

Lines changed: 19 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,6 @@
2222
"lte": "__le__",
2323
}
2424

25-
MODEL = typing.TypeVar("MODEL", bound="Model")
26-
2725

2826
def _update_auto_now_fields(values, fields):
2927
for key, value in fields.items():
@@ -468,7 +466,7 @@ async def update(self, **kwargs) -> None:
468466
await self.database.execute(expr)
469467

470468
async def bulk_update(
471-
self, objs: typing.List[MODEL], fields: typing.List[str]
469+
self, objs: typing.List["Model"], fields: typing.List[str]
472470
) -> None:
473471
fields = {
474472
key: field.validator
@@ -477,29 +475,25 @@ async def bulk_update(
477475
}
478476
validator = typesystem.Schema(fields=fields)
479477
new_objs = [
480-
_update_auto_now_fields(validator.validate(value), self.model_cls.fields)
481-
for value in [
482-
{
483-
key: _convert_value(value)
484-
for key, value in obj.__dict__.items()
485-
if key in fields
486-
}
487-
for obj in objs
488-
]
478+
{
479+
key: _convert_value(value)
480+
for key, value in obj.__dict__.items()
481+
if key in fields
482+
}
483+
for obj in objs
489484
]
490-
expr = (
491-
self.table.update()
492-
.where(
493-
getattr(self.table.c, self.pkname) == sqlalchemy.bindparam(self.pkname)
494-
)
495-
.values(
496-
{
497-
field: sqlalchemy.bindparam(field)
498-
for obj in new_objs
499-
for field in obj.keys()
500-
}
501-
)
502-
)
485+
new_objs = [
486+
_update_auto_now_fields(validator.validate(obj), self.model_cls.fields)
487+
for obj in new_objs
488+
]
489+
pk_column = getattr(self.table.c, self.pkname)
490+
expr = self.table.update().where(pk_column == sqlalchemy.bindparam(self.pkname))
491+
kwargs = {
492+
field: sqlalchemy.bindparam(field)
493+
for obj in new_objs
494+
for field in obj.keys()
495+
}
496+
expr = expr.values(kwargs)
503497
pk_list = [{self.pkname: getattr(obj, self.pkname)} for obj in objs]
504498
joined_list = [{**pk, **value} for pk, value in zip(pk_list, new_objs)]
505499
await self.database.execute_many(str(expr), joined_list)

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy