[sqlalchemy] insert defaults

2010-03-04 Thread patrick
Hey,
  I'm trying to create dynamic defaults for columns ala http://
www.sqlalchemy.org/docs/metadata.html#context-sensitive-default-functions.
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.

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.



Re: [sqlalchemy] insert defaults

2010-03-04 Thread Michael Bayer
patrick wrote:
 Hey,
   I'm trying to create dynamic defaults for columns ala http://
 www.sqlalchemy.org/docs/metadata.html#context-sensitive-default-functions.
 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.