On 7/19/15 4:25 PM, Dirk Makowski wrote:
Thank you very much. Even though I suspected that issue to be related
to that chapter, in 13 years I would not have come up with your solution.
You solved my problem, but I'm still curious about that <class
'sqlalchemy.util._collections.result'>, which does not really exist. I
understand that it must be the new KeyedTuple implementation as it
descends from tuple and has methods like keys(). But the exception
message talks about a class that is clearly not there and can neither
be imported nor used in isinstance().
it works like Python's NamedTuple and is thus a class that is created on
the fly, the name given as "result".
On Sunday, July 19, 2015 at 9:58:42 PM UTC+2, Michael Bayer wrote:
On 7/19/15 3:09 PM, Dirk Makowski wrote:
Thanks for looking into it. Sorry about 7z, it's an archive.
Please see the revised attachment.
OK, that's some elaborate test script but ultimately this is your
issue:
if isinstance(inp, KeyedTuple):
return proc_keyed_tuple(inp)
should be:
if isinstance(inp, tuple):
return proc_keyed_tuple(inp)
see:
http://docs.sqlalchemy.org/en/latest/changelog/migration_10.html#new-keyedtuple-implementation-dramatically-faster
In principle, I'm converting the result from a query into a list
of dicts.
|
data =[]
rs =sess.query(...)
forr inrs:
data.append(dictate(r))
|
In function dictate() is the call to inspect(). Until SA 0.9.9 it
worked fine. With version 1.0.6 sometimes the call to inspect()
fails with honestly that error message. It depends on what was
queried:
- a single ORM object: OK
- hand-made SQL (sa.text()): OK
- several joined ORM objects: FAIL
- mixture of ORM objects and columns: FAIL
Attached script goes through these situations and shows exactly
what happens.
On Sunday, July 19, 2015 at 6:28:07 PM UTC+2, Michael Bayer wrote:
On 7/19/15 11:58 AM, Dirk Makowski wrote:
Hello all,
some time ago I wrote a function to mogrify SA query results
into a list of dicts. It uses the inspector to determine
columns etc. Up until SA 0.9.9 it worked well. However,
after an upgrade of SA to 1.0.6 in some circumstances I get
this error:
|
Noinspection system isavailable forobjectof type
<class'sqlalchemy.util._collections.result'>
|
What previously had been a Python type or ORM type now is an
ominous 'result'.
Hopefully you can give some pointers about what it is and
how I could fix my function. A test case with more info in
the sources is attached. Apart from SA it does have no
external dependencies.
The error is that you are calling inspect() on something that
does not support inspection. There's no object in
util._collections called "result" so I don't know what that is.
Also I don't know what a "7z" file is. Can you please send a
single, very succinct .py file with a simple illustration of
your error? Thanks.
Thank you,
Dirk
--
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+...@googlegroups.com <javascript:>.
To post to this group, send email to sqlal...@googlegroups.com
<javascript:>.
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
<mailto:sqlalchemy+unsubscr...@googlegroups.com>.
To post to this group, send email to sqlalchemy@googlegroups.com
<mailto: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.