Well it's something between the two.  The instance variable
"compressed" will always be NULL when adding or updating an instance,
but I want it to infer a value from another instance variable.  When
inserting... the value of 'compressed' in the sql statement needs to
be the raw SQL string "COMPRESS('%s')" % instance.text.  It isn't
simply running it through a function... it's dynamically creating the
column value from the object's instance variables upon insert or
update.  MySQL has some funky compression function so the insert value
for the column has to be raw sql.

On Mar 4, 3:30 pm, "Michael Bayer" <mike...@zzzcomputing.com> wrote:
> patrick wrote:
> > Hey,
> >   I'm trying to create dynamic defaults for columns ala "http://
> >www.sqlalchemy.org/docs/metadata.html#context-sensitive-default-funct...".
> > MySQL has COMPRESS and UNCOMPRESS functions that I'm trying to
> > leverage.  I don't want to compress with python's zlib because I have
> > legacy tables that were compressed using MySQL (which has a weird non-
> > standard zip header and body), and I need to interface with them.
> > Anyway, during an insert or update, I want to grab the 'text' variable
> > from the instance object and insert it into the database like:
> > COMPRESS("the text value").  Obviously context.current_parameters is
> > not the appropriate object, but I can't figure out if it's possible to
> > access the instance being inserted/updated.
>
> are you trying to create a *default* value for an INSERT/UPDATE when NULL
> would otherwise be passed, or are you trying to run all incoming/outgoing
> data through a SQL function ?  those are two completely separate topics.
>
>
>
> > def compress_text(context):
> >     return "COMPRESS('%s')" % context.current_parameters['text']
>
> > class Tree(BaseStruct, Base):
> >     __tablename__ = 'tree'
> >     __table_args__ = (
> >             {'autoload':True}
> >             )
>
> >     compressed =
> > deferred(Column(Binary(),default=compress_text,default=compress_text,onupdate=compress_text))
> >     text =
> > column_property(select(["UNCOMPRESS(compressed)"]),deferred=True)
>
> > Is this possible with 0.5.7?
>
> > --
> > 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