from .descriptor_props import Composite
from .descriptor_props import Synonym
from .interfaces import _AttributeOptions
-from .properties import ColumnProperty
from .properties import MappedColumn
from .properties import MappedSQLExpression
from .query import AliasOption
expire_on_flush: bool = True,
info: Optional[_InfoType] = None,
doc: Optional[str] = None,
-) -> ColumnProperty[_T]:
+) -> MappedSQLExpression[_T]:
r"""Indicate a column-based mapped attribute that by default will
not load unless accessed.
:ref:`orm_queryguide_deferred_imperative`
"""
- return ColumnProperty(
+ return MappedSQLExpression(
column,
*additional_columns,
attribute_options=_AttributeOptions(
expire_on_flush: bool = True,
info: Optional[_InfoType] = None,
doc: Optional[str] = None,
-) -> ColumnProperty[_T]:
+) -> MappedSQLExpression[_T]:
"""Indicate an attribute that populates from a query-time SQL expression.
:param default_expr: Optional SQL expression object that will be used in
:ref:`orm_queryguide_with_expression` - background and usage examples
"""
- prop = ColumnProperty(
+ prop = MappedSQLExpression(
default_expr,
attribute_options=_AttributeOptions(
_NoArg.NO_ARG,
+from sqlalchemy import String
+from sqlalchemy.orm import column_property
from sqlalchemy.orm import DeclarativeBase
+from sqlalchemy.orm import deferred
from sqlalchemy.orm import Mapped
from sqlalchemy.orm import mapped_column
+from sqlalchemy.orm import query_expression
from sqlalchemy.orm import validates
def validate_name(self, name: str) -> str:
"""test #8577"""
return name + "hi"
+
+ # test #9536
+ _password: Mapped[str] = mapped_column("Password", String)
+ password1: Mapped[str] = column_property(
+ _password.collate("SQL_Latin1_General_CP1_CS_AS"), deferred=True
+ )
+ password2: Mapped[str] = deferred(
+ _password.collate("SQL_Latin1_General_CP1_CS_AS")
+ )
+ password3: Mapped[str] = query_expression(
+ _password.collate("SQL_Latin1_General_CP1_CS_AS")
+ )