Re: [sqlalchemy] Issues with Type conversions with raw queries

2018-06-05 Thread Fokko Driesprong
Thanks Mike for the quick response. Personally I don't mind missing this 
functionality.

Although when rewriting the code as following:

tbl = Table('one_row_complex', MetaData(bind=engine)).columns
row = connection.execute(
text('SELECT * FROM one_row_complex').columns(*tbl)
).fetchone()
self.assertEqual(row, _ONE_ROW_COMPLEX_CONTENTS)

I'm still having the same problem. The Datetime and Decimal is still 
represented as a string. How did sqllite solve this? I recently used 
Postgres and there the Postgres Decimals are also returned as a Python 
Decimal value.

Thanks!

Cheers, Fokko


Op maandag 4 juni 2018 23:49:09 UTC+2 schreef Mike Bayer:
>
> On Mon, Jun 4, 2018 at 5:28 PM, Fokko Driesprong  > wrote: 
> > Hi All, 
> > 
> > I'm working on making PyHive compatible with SQLAlchemy 1.2.8: 
> > https://github.com/Fokko/PyHive/tree/fd-fix-tests 
> > 
> > Now I run into some problems which is I can't figure out. Hopefully 
> there is 
> > anyone who has more experience with this than me. The dbapi_type_map has 
> > been deprecated in 1.2 and now I'm unable to parse the types with raw 
> > queries. What does work: 
> > 
> > tbl = Table('one_row_complex', MetaData(bind=engine), autoload=True) 
> > rows = tbl.select().execute().fetchone() 
> > self.assertEqual(list(rows[0]), _ONE_ROW_COMPLEX_CONTENTS) 
> > 
> > What doesn't work: 
> > 
> > row = connection.execute('SELECT * FROM one_row_complex').fetchone() 
> > self.assertEqual(row, _ONE_ROW_COMPLEX_CONTENTS) 
>
> the dbape_type_map was a hack that was only used by the Oracle dialect 
> due to the really awkward way cx_Oracle acted with LOB objects.   It 
> was never used for things like date conversions and decimals - if you 
> use SQLite with raw SQL you will get back strings for dates and floats 
> for decimals too.   SQLAlchemy only applies typing behavior when you 
> specify it with table metadata.  In the above case, you can use 
> text("SELECT * FROM one_row_complex").columns(*tbl.c) to apply the 
> types, assuming tbl.c's columns are in the same order as they would be 
> from "*". 
>
> There's ways to re-introduce the ability to inject types into the 
> result set but this would have to be re-proposed into the new 
> architecture, as this was never a real "feature". 
>
>
>
> > 
> > I found out that the following routine isn't invoked when running the 
> raw 
> > sql: 
> > 
> https://github.com/Fokko/PyHive/blob/master/pyhive/sqlalchemy_hive.py#L229-L258
>  
> > 
> > Does anyone know how to convert the datetime and the decimal when 
> running 
> > the raw SQL? I when through all the documentation and tried a lot (as 
> you 
> > might see in the pull-request), but I couldn't get it to work. 
> > 
> > Please let me know, 
> > 
> > Kind regards, Fokko 
> > 
> > -- 
> > SQLAlchemy - 
> > The Python SQL Toolkit and Object Relational Mapper 
> > 
> > http://www.sqlalchemy.org/ 
> > 
> > To post example code, please provide an MCVE: Minimal, Complete, and 
> > Verifiable Example. See http://stackoverflow.com/help/mcve for a full 
> > description. 
> > --- 
> > 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 https://groups.google.com/group/sqlalchemy. 
> > For more options, visit https://groups.google.com/d/optout. 
>

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
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 https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.


[sqlalchemy] Issues with Type conversions with raw queries

2018-06-04 Thread Fokko Driesprong
Hi All,

I'm working on making PyHive compatible with SQLAlchemy 
1.2.8: https://github.com/Fokko/PyHive/tree/fd-fix-tests

Now I run into some problems which is I can't figure out. Hopefully there 
is anyone who has more experience with this than me. The dbapi_type_map has 
been deprecated in 1.2 and now I'm unable to parse the types with raw 
queries. What does work:

tbl = Table('one_row_complex', MetaData(bind=engine), autoload=True)
rows = tbl.select().execute().fetchone()
self.assertEqual(list(rows[0]), _ONE_ROW_COMPLEX_CONTENTS)

What doesn't work:

row = connection.execute('SELECT * FROM one_row_complex').fetchone()
self.assertEqual(row, _ONE_ROW_COMPLEX_CONTENTS)

I found out that the following routine isn't invoked when running the raw 
sql: 
https://github.com/Fokko/PyHive/blob/master/pyhive/sqlalchemy_hive.py#L229-L258

Does anyone know how to convert the datetime and the decimal when running 
the raw SQL? I when through all the documentation and tried a lot (as you 
might see in the pull-request), but I couldn't get it to work.

Please let me know,

Kind regards, Fokko

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
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 https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.