GP <pandit.gau...@gmail.com> wrote:

> OK, is “cancellation_obj” a column object with CLOB as the datatype ? 
> 
> Yes, that's how it's defined in the database.
> 
> Because of dynamic nature of the code, I was using append_column without 
> specifying column type. I made changes to define column in 
> table.c.<column_name> format rather than just using Column('column name'). 
> This way, I can make sure column data types are included with column 
> definitions, without me having to specify the data type explicitly with each 
> column.
> 
> It's interesting that I used that one way (out of three possible ways) that 
> wasn't 'right', but it's all good now :)
> 
> Now onto changing from fetchmany() to fetchone() - since LOBs are pretty much 
> forcing me to use fetchone().

OK, if you were to get the CLOB types working correctly, SQLAlchemy’s result 
proxy works around that issue also, by fetching rows in chunks and converting 
the LOB objects to strings while they are still readable, so you could keep 
with the fetchmany() calls.




> 
> Thank you for your help!
> GP
> 
> On Monday, March 16, 2015 at 5:54:54 PM UTC-4, Michael Bayer wrote:
> 
> 
> GP <pandit...@gmail.com> wrote: 
> 
> > So that's what was happening: 
> > 
> > This select construct fails: 
> > select_query = select() 
> > select_query.append_column(contract_id) 
> > select_query.append_column(cancel_dt) 
> > select_query.append_column(cancellation_obj) 
> > select_query.append_from(source_table_name) 
> > 
> > 
> > But this select construct works: 
> > select_query = select([source_table.c.contract_id, 
> > source_table.c.cancel_dt, source_table.c.cancellation_quote_obj]) 
> > 
> > So it's just matter of rewriting select query in the 'right' way. 
> > 
> > Thanks for pointing in the right direction! 
> 
> OK, is “cancellation_obj” a column object with CLOB as the datatype ? 
> 
> even if you just made it this: 
> 
>     from sqlalchemy.sql import column 
>     append_column(column(‘cancellation_obj’, CLOB)) 
> 
> that should work. 
> 
> 
> otherwise, what’s interesting here is to add a “column” without a datatype 
> both bypasses the usual Table metadata feature, but also, bypasses if it was 
> totally a plain text SQL string there’s logic in place to intercept the CLOB 
> in that case also.    the recipe above managed to avoid both. 
> 
> 
> 
> > GP 
> > 
> > On Monday, March 16, 2015 at 4:57:28 PM UTC-4, GP wrote: 
> > I think now I (probably) know where this may be coming from. 
> > 
> > You asked 
> > > is the original query a plain string and not a Core SQL expression 
> > 
> > The way I am forming the query is by using select , append_column, 
> > append_whereclause and finally append_from('my_table'). I think this pretty 
> > much generates a plain string query and not the one that's tied to a 
> > sqlalchemy table type object. And this may be why sqlalchemy is not 
> > applying necessary conversion because it doesn't really know the data types 
> > of the columns I am selecting? 
> > 
> > Apologies if I am simplifying this too much and/or talking nonsense. 
> > 
> > Thanks 
> > GP 
> > 
> > On Monday, March 16, 2015 at 3:49:32 PM UTC-4, GP wrote: 
> > Thank you Michael. 
> > 
> > auto_covert_lobs : I ran with all three possible values: True, False, and 
> > without supplying it. The results are the same. 
> > 
> > The original query is a bit more complicated than the example I gave, and 
> > is built dynamically. But I am using sqlalchemy select, and not a plain 
> > string. Query is of object type "sqlalchemy.select.sql.selectable.Select" 
> > (Or "sqlalchemy.sql.expression.Select"?), if it helps. 
> > 
> > Here is what the query object value looks like: 
> > SELECT CAST(contract_id AS FLOAT) AS contract_id, cancel_dt AS cancel_dt, 
> > cancellation_obj AS cancellation_obj FROM contract_cancellation WHERE 
> > updated_ts BETWEEN :updated_ts_1 AND :updated_ts_2 
> > 
> > Let me try calling value(). 
> > 
> > 
> > Thanks 
> > GP 
> > 
> > -- 
> > 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 sqlalchemy+...@googlegroups.com. 
> > To post to this group, send email to sqlal...@googlegroups.com. 
> > Visit this group at http://groups.google.com/group/sqlalchemy. 
> > For more options, visit https://groups.google.com/d/optout. 
> 
> -- 
> 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 sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at http://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.

-- 
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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to