hiya -

going to say right off this is the naming issue, there's an unfortunately 
stalled PR to make sure the documentation emphasizes this at 
https://github.com/sqlalchemy/sqlalchemy/pull/4970 . basically the same note as 
you see in 
https://docs.sqlalchemy.org/en/13/orm/extensions/hybrid.html#defining-expression-behavior-distinct-from-attribute-behavior.
 basically you are assigning your setter function to a brand new hybrid called 
"email_setter". name it "def email(self, val)" instead.


On Thu, Dec 19, 2019, at 3:34 PM, YKdvd wrote:
> We have a "Users" model with this, which was a hybrid property to wrap the 
> "email" column temporarily. The database column (MySQL 5.7) is "email", but 
> defined by ORM as "_email", with an "email" hybrid property to access and set:
> 
> _email = Column(*u'email'*, String(255))
> ...
> @hybrid_property
> def email(self):
> return self._email.replace("olddomain.com", "newdomain.com")
> @email.setter
> def email_setter(self, val):
> self._email = val
> 
> In 1.1.18, something like "self.email = someEmailAddress" works fine.  We're 
> testing an upgrade to 1.3.11, and that now throws an "AttributeError: can't 
> set attribute" from hybrid.py __set__(). 
> That seems to be at a simple check "if self.fset *is *None", so it's almost 
> as if the decorator never stored the setter function?  I'm digging into the 
> hybrid docs, and it seems a pretty innocuous setter, but there might be 
> something about it that
> 1.3 is being stricter about?  I don't see any SAwarnings at startup that 
> might apply.  I changed the getter to simply return self._email in case that 
> was a problem, but that didn't help.
> 

> --
>  SQLAlchemy - 
>  The Python SQL Toolkit and Object Relational Mapper
> 
> http://www.sqlalchemy.org/
> 
>  To post example code, please provide an MCVE: Minimal, Complete, and 
> Verifiable Example. See http://stackoverflow.com/help/mcve for a full 
> description.
>  --- 
>  You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
>  To unsubscribe from this group and stop receiving emails from it, send an 
> email to sqlalchemy+unsubscr...@googlegroups.com.
>  To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sqlalchemy/eb31b100-a9e1-4ddc-9b76-d8a7651bb4dc%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/sqlalchemy/eb31b100-a9e1-4ddc-9b76-d8a7651bb4dc%40googlegroups.com?utm_medium=email&utm_source=footer>.

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/7ac22728-ef48-4b33-83d5-12efcb7b66a4%40www.fastmail.com.

Reply via email to