On Feb 28, 2011, at 18:21 , Michael Bayer wrote:

> Column can be subclassed but because they are intensively used in complex 
> expression transformations, your custom class may be used in more scenarios 
> than you first anticipate.
> 
> There are two scenarios where Column objects are copied, and in one case 
> copied into an altered class, so the "copying" of Column uses an attribute 
> called _constructor to point to which class should be used when creating this 
> copy.  Usually setting that to Column:
> 
> class MyColumn(Column):
>    _constructor = Column
> 
>   # .... go nuts

LOL!! Thanks

> 
> is all you need.   
> 
> 
> 
> On Feb 28, 2011, at 10:17 AM, Martijn Moeling wrote:
> 
>> Hi,
>> 
>> I know this is an "OLD" threat but I was searching the group to see If I was 
>> not the first one doing this.
>> 
>> I am not sure I understand very well what this threat is all about, but I 
>> want to extend the Column class for a different reason.
>> 
>> I want to add extra functionality to the Column class which is absolutely 
>> NOT SA related. SA functionality should not be effected though.
>> 
>> say I want to add a config value and some methods for rendering and 
>> validating screens:
>> 
>> def MyColumn(Column):
>> 
>>      def __init():
>>              dosomething to init
>> 
>>      def ExtraInfo(self):
>>              do_something_not_sa_related
>> 
>>      validation = 'someregex'
>> 
>> 
>> and use MyColumn in places where I normally use Column(......)
>> 
>> What do I need to take into account, I've done some tests and "Error hell" 
>> broke loose, where the errors are hidden deep inside SA so hard to overcome.
>> 
>> Martijn  
>> 
>> On Dec 11, 2008, at 16:20 , Michael Bayer wrote:
>> 
>>> 
>>> 
>>> On Dec 11, 2008, at 3:37 AM, Angri wrote:
>>> 
>>>> 
>>>> Here it is: http://www.sqlalchemy.org/trac/ticket/1244
>>>> 
>>>> Maybe it is good idea to drop some new lines in faq? Something like
>>>> this:
>>>> 
>>>> Q: How should I extend sqlalchemy.schema.Column?
>>>> A: You surely dont need it. Recommended way to achive your possible
>>>> needs is to write instance-factory function which decorates creation
>>>> of sqlalchemy.schema.Column instances.
>>>> 
>>>> Q: But I'm really need it!
>>>> A: Ok. To subclass Column, this is the current recipe:
>>>> 
>>>> from sqlalchemy.sql.util import Annotated, annotated_classes
>>>> 
>>>> class MyColumn(Column):
>>>> ...
>>>> 
>>>> class AnnotatedMyColumn(Annotated, MyColumn):
>>>> pass
>>>> 
>>>> annotated_classes[MyColumn] = AnnotatedMyColumn
>>>> 
>>>> Do not forget to put AnnotatedMyColumn in the module namespace, or
>>>> your schema will not be pickleable!
>>>> 
>>>> Correct me please if I am wrong somewhere and excuse me for my
>>>> English.
>>> 
>>> Well the AnnotatedMyColumn part is less than ideal since its an  
>>> internal.  the way that works could very likely change.   Creating an  
>>> AnnotatedXXX class *can* be automated.  the pickle thing just might be  
>>> a caveat we'd document or arrange for an exception to occur (like  
>>> putting a throw in a __getstate__ method).
>>> 
>>> --~--~---------~--~----~------------~-------~--~----~
>>> You received this message because you are subscribed to the Google Groups 
>>> "sqlalchemy" group.
>>> To post to this group, send email to sqlalchemy@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 sqlalchemy@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 sqlalchemy@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 sqlalchemy@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