On Aug 13, 2010, at 10:01 AM, Dan wrote:

> I have created a custom type in order to store denormalized PKs in a
> TEXT field. The idea is that the text is converted back and forth from
> a set of integers:
> 
> http://paste.pocoo.org/show/249784/

this is unrelated, but the code is incorrect there, should be

        def process(value):
            if value is not None:
                items = [str(item).strip() for item in value]
                value = self.separator.join(item for item in items if item)

otherwise, you must implement copy_value() on your type.   Here, the value 
isn't being copied so there's nothing to compare to.

Usually you're supposed to mixin MutableType which will raise notimplemented 
for copy_value().   I guess still more docs are needed since you were misled by 
the is_mutable() method.






> 
> This seems to work OK, however if you make a change to the set it's
> not picked up by SQLAlchemy on commit.
> 
> For example, given the following model:
> 
> class Post(DeclarativeBase):
>    __tablename__ = "posts"
>    id = Column(Integer, primary_key=True)
>    votes = Column(DenormalizedText)
> 
>    def __init__(self, *args, **kwargs):
>        super(Post, self).__init__(*args, **kwargs)
>        self.votes = self.votes or set()
> 
> If I do this:
> 
> post = Post()
> post.votes.add(3)
> 
> session.add(post)
> session.commit()
> 
> The value '3' is committed to the 'votes' column as expected.
> 
> However if I then try to modify:
> 
> post.votes.add(5)
> session.commit()
> 
> The change to the set is not saved to the DB, i.e. it's still "3".
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "sqlalchemy" group.
> To post to this group, send email to sqlalch...@googlegroups.com.
> To unsubscribe from this group, send email to 
> sqlalchemy+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/sqlalchemy?hl=en.
> 

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalch...@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to