add support for sqlalchemy >=1.4

This commit is contained in:
collerek
2021-08-30 09:47:38 +02:00
parent b70a6691b0
commit aedebe0403
3 changed files with 18 additions and 14 deletions

View File

@ -3,7 +3,7 @@
## ✨ Features ## ✨ Features
* Allow overwriting the default pydantic type for model fields [#312](https://github.com/collerek/ormar/issues/285) * Allow overwriting the default pydantic type for model fields [#312](https://github.com/collerek/ormar/issues/285)
* Add support for `sqlalchemy` >=1.4 (requires `databases` >= 0.5.0) [#142](https://github.com/collerek/ormar/issues/142)
# 0.10.16 # 0.10.16

View File

@ -10,7 +10,11 @@ from typing import (
cast, cast,
) )
import sqlalchemy try:
from sqlalchemy.engine.result import ResultProxy
except ImportError: # pragma: no cover
from sqlalchemy.engine.result import Row as ResultProxy # type: ignore
from ormar.models import NewBaseModel # noqa: I202 from ormar.models import NewBaseModel # noqa: I202
from ormar.models.excludable import ExcludableItems from ormar.models.excludable import ExcludableItems
@ -25,7 +29,7 @@ class ModelRow(NewBaseModel):
@classmethod @classmethod
def from_row( # noqa: CFQ002 def from_row( # noqa: CFQ002
cls, cls,
row: sqlalchemy.engine.ResultProxy, row: ResultProxy,
source_model: Type["Model"], source_model: Type["Model"],
select_related: List = None, select_related: List = None,
related_models: Any = None, related_models: Any = None,
@ -59,7 +63,7 @@ class ModelRow(NewBaseModel):
:param source_model: model on which relation was defined :param source_model: model on which relation was defined
:type source_model: Type[Model] :type source_model: Type[Model]
:param row: raw result row from the database :param row: raw result row from the database
:type row: sqlalchemy.engine.result.ResultProxy :type row: ResultProxy
:param select_related: list of names of related models fetched from database :param select_related: list of names of related models fetched from database
:type select_related: List :type select_related: List
:param related_models: list or dict of related models :param related_models: list or dict of related models
@ -153,7 +157,7 @@ class ModelRow(NewBaseModel):
def _populate_nested_models_from_row( # noqa: CFQ002 def _populate_nested_models_from_row( # noqa: CFQ002
cls, cls,
item: dict, item: dict,
row: sqlalchemy.engine.ResultProxy, row: ResultProxy,
source_model: Type["Model"], source_model: Type["Model"],
related_models: Any, related_models: Any,
excludable: ExcludableItems, excludable: ExcludableItems,
@ -183,7 +187,7 @@ class ModelRow(NewBaseModel):
:param item: dictionary of already populated nested models, otherwise empty dict :param item: dictionary of already populated nested models, otherwise empty dict
:type item: Dict :type item: Dict
:param row: raw result row from the database :param row: raw result row from the database
:type row: sqlalchemy.engine.result.ResultProxy :type row: ResultProxy
:param related_models: list or dict of related models :param related_models: list or dict of related models
:type related_models: Union[Dict, List] :type related_models: Union[Dict, List]
:return: dictionary with keys corresponding to model fields names :return: dictionary with keys corresponding to model fields names
@ -263,7 +267,7 @@ class ModelRow(NewBaseModel):
@classmethod @classmethod
def _populate_through_instance( # noqa: CFQ002 def _populate_through_instance( # noqa: CFQ002
cls, cls,
row: sqlalchemy.engine.ResultProxy, row: ResultProxy,
item: Dict, item: Dict,
related: str, related: str,
excludable: ExcludableItems, excludable: ExcludableItems,
@ -275,7 +279,7 @@ class ModelRow(NewBaseModel):
Normally it's child class, unless the query is from queryset. Normally it's child class, unless the query is from queryset.
:param row: row from db result :param row: row from db result
:type row: sqlalchemy.engine.ResultProxy :type row: ResultProxy
:param item: parent item dict :param item: parent item dict
:type item: Dict :type item: Dict
:param related: current relation name :param related: current relation name
@ -301,7 +305,7 @@ class ModelRow(NewBaseModel):
@classmethod @classmethod
def _create_through_instance( def _create_through_instance(
cls, cls,
row: sqlalchemy.engine.ResultProxy, row: ResultProxy,
through_name: str, through_name: str,
related: str, related: str,
excludable: ExcludableItems, excludable: ExcludableItems,
@ -343,7 +347,7 @@ class ModelRow(NewBaseModel):
def extract_prefixed_table_columns( def extract_prefixed_table_columns(
cls, cls,
item: dict, item: dict,
row: sqlalchemy.engine.result.ResultProxy, row: ResultProxy,
table_prefix: str, table_prefix: str,
excludable: ExcludableItems, excludable: ExcludableItems,
) -> Dict: ) -> Dict:

View File

@ -1,8 +1,8 @@
databases[sqlite]>=0.3.2,<=0.4.1 databases[sqlite]>=0.3.2,<0.5.1
databases[postgresql]>=0.3.2,<=0.4.1 databases[postgresql]>=0.3.2,<0.5.1
databases[mysql]>=0.3.2,<=0.4.1 databases[mysql]>=0.3.2,<0.5.1
pydantic >=1.6.1,!=1.7,!=1.7.1,!=1.7.2,!=1.7.3,!=1.8,!=1.8.1,<=1.8.2 pydantic >=1.6.1,!=1.7,!=1.7.1,!=1.7.2,!=1.7.3,!=1.8,!=1.8.1,<=1.8.2
sqlalchemy>=1.3.18,<=1.3.23 sqlalchemy>=1.3.18,<=1.4.23
typing_extensions>=3.7,<=3.7.4.3 typing_extensions>=3.7,<=3.7.4.3
orjson orjson
cryptography cryptography