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 [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> 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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.