If this is a custom dialect there's a lot that needs to be checked.   The
columns in the "*" would need to line up with *columns, and you might want
to try passing a dictionary of colname->datatype for more specificity.   If
the dialect uses uppercase names for case-insensitive identifiers, that
would need some adjustment.   The numeric and datetime types that your
dialect defines need to do the right thing with the result set too.

Basically I haven't looked at the software you're testing but these are the
general areas of functionality to check.   I find using pdb is the most
direct method of zooming in on where something isn't happening.

On Tue, Jun 5, 2018, 4:37 AM Fokko Driesprong <[email protected]> wrote:

> 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 <[email protected]>
>> 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 [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.
>>
> --
> 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 [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.
>

-- 
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 [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.

Reply via email to