#7877: incorrect ProgrammingError in IPython
------------------------------+---------------------------------------------
Reporter: kcarnold | Owner: nobody
Status: new | Milestone:
Component: Database wrapper | Version: SVN
Keywords: | Stage: Unreviewed
Has_patch: 0 |
------------------------------+---------------------------------------------
I ran into this today and couldn't debug it. There's something weird in
the interaction between IPython (Ubuntu's version 0.8.1-2) and Django.
The symptom is {{{<class 'psycopg2.ProgrammingError'>: current transaction
is aborted, commands ignored until end of transaction block}}} after
executing a statement that throws a ''single'' SQL error. The immediate
cause of that, as looking in django.db.connection.queries confirms, is
that the query is actually getting run ''twice''. It only happens when not
storing the output in a variable; when the statement is an assignment, the
real (original) database error is displayed.
Example:
{{{
In [1]: from csamoa.conceptnet.models import *
In [4]: from django.db import connection
In [5]: connection.queries
In [6]: a=Assertion.objects.all()[0]
In [7]: connection.queries
Out[7]:
[{'sql': 'SELECT "predicates"."id", "predicates"."batch_id",
"predicates"."raw_id", "predicates"."frame_id",
"predicates"."predtype_id", "predicates"."stem1_id",
"predicates"."stem2_id", "predicates"."polarity", "predicates"."modality",
"predicates"."score", "predicates"."created_on", "predicates"."text1",
"predicates"."text2", "predicates"."creator_id",
"predicates"."sentence_id", "predicates"."language_id",
"predicates"."visible", "predicates"."source" FROM "predicates" ORDER BY
"predicates"."score" DESC LIMIT 1',
'time': '0.005'}]
In [9]: a.creator
... traceback ... execute in db.backends.util...
<class 'psycopg2.ProgrammingError'>: current transaction is aborted,
commands ignored until end of transaction block
In [10]: connection.queries
Out[10]:
[{'sql': 'SELECT "predicates"."id", "predicates"."batch_id",
"predicates"."raw_id", "predicates"."frame_id",
"predicates"."predtype_id", "predicates"."stem1_id",
"predicates"."stem2_id", "predicates"."polarity", "predicates"."modality",
"predicates"."score", "predicates"."created_on", "predicates"."text1",
"predicates"."text2", "predicates"."creator_id",
"predicates"."sentence_id", "predicates"."language_id",
"predicates"."visible", "predicates"."source" FROM "predicates" ORDER BY
"predicates"."score" DESC LIMIT 1',
'time': '0.005'},
{'sql': 'SELECT "auth_user"."id", "auth_user"."username",
"auth_user"."first_name", "auth_user"."last_name", "auth_user"."email",
"auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active",
"auth_user"."is_superuser", "auth_user"."last_login",
"auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 21900
',
'time': '0.001'},
{'sql': 'SELECT "auth_user"."id", "auth_user"."username",
"auth_user"."first_name", "auth_user"."last_name", "auth_user"."email",
"auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active",
"auth_user"."is_superuser", "auth_user"."last_login",
"auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 21900
',
'time': '0.001'}]
}}}
but with a minor change to just the last line, we get the correct
behavior:
{{{
In [5]: b=a.creator
... good traceback ...
<class 'psycopg2.ProgrammingError'>: relation "auth_user" does not exist
In [6]: connection.queries
Out[6]:
[{'sql': 'SELECT "predicates"."id", "predicates"."batch_id",
"predicates"."raw_id", "predicates"."frame_id",
"predicates"."predtype_id", "predicates"."stem1_id",
"predicates"."stem2_id", "predicates"."polarity", "predicates"."modality",
"predicates"."score", "predicates"."created_on", "predicates"."text1",
"predicates"."text2", "predicates"."creator_id",
"predicates"."sentence_id", "predicates"."language_id",
"predicates"."visible", "predicates"."source" FROM "predicates" ORDER BY
"predicates"."score" DESC LIMIT 1',
'time': '0.005'},
{'sql': 'SELECT "auth_user"."id", "auth_user"."username",
"auth_user"."first_name", "auth_user"."last_name", "auth_user"."email",
"auth_user"."password", "auth_user"."is_staff", "auth_user"."is_active",
"auth_user"."is_superuser", "auth_user"."last_login",
"auth_user"."date_joined" FROM "auth_user" WHERE "auth_user"."id" = 21900
',
'time': '0.002'}]
}}}
This smells like an IPython bug, but I'm reporting it here because this
would certainly explain all the times when I got those annoying
{{{ProgrammingError}}}s for irrelevant things. Anyone else see this? Or
any better clues about what to report to the ipython people?
--
Ticket URL: <http://code.djangoproject.com/ticket/7877>
Django Code <http://code.djangoproject.com/>
The web framework for perfectionists with deadlines
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---