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.
