It seems BufferedColumnResultProxy class (used only in Oracle dialect) has a bug.
_init_metadata() method defined at https://github.com/zzzeek/sqlalchemy/blob/rel_1_0_12/lib/sqlalchemy/engine/result.py#L1238 is being called even for already cached data (that's probably bug) and because this method clears a list of processors (metadata._processors = [None for _ in range(len(metadata.keys))]) the list of original processors (metadata._orig_processors) gets cleared the second time _init_metadata() method is called. The end result is that column's value is not being processed to proper Python type from the db original type and one gets errors like: File "/home/piotr/.virtualenvs/kotti/lib/python2.7/site-packages/sqlalchemy/ext/mutable.py", line 403, in coerce raise ValueError(msg % (key, type(value))) ValueError: Attribute '_acl' does not accept objects of type <type 'cx_Oracle.LOB'> Whole traceback is available at http://pastebin.com/Ssui33XC Guarding method's body after line L1240 with "if not hasattr(metadata, '_orig_processors'):" solves the problem but it's neither pretty nor it's the right solution. The right solution is probably to not call _init_metadata() method on cached data at all. I'd appreciate if someone with good understanding of SA internals could take a look and confirm (better yet fix) this bug. I have to admit it took a top notch developer a couple of hours of debugging to go through much of SA code and establish the root cause of this problem. I'm going to raise issue on tracker as soon as someone confirms this bug. Best regards, Piotr Dobrogost -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/d/optout.
