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.