Monday, April 30, 2012

Re: executing raw sql

On Mon, Apr 30, 2012 at 12:46 PM, Larry Martell <larry.martell@gmail.com> wrote:
> I'm trying to execute some raw sql. I found some code that did this:
>
> from django.db import connection
> cursor = connection.cursor()
> cursor.execute(sql)
> data = cursor.fetchall()
>
> But the cursor.execute(sql) is blowing up with:
>
> 'Cursor' object has no attribute '_last_executed'
>
> What is the best or proper way for me to execute my raw sql?

I traced this with the debugger, and it's blowing up in
django/db/backends/mysql/base.py in this:

def last_executed_query(self, cursor, sql, params):
# With MySQLdb, cursor objects have an (undocumented) "_last_executed"
# attribute where the exact query sent to the database is saved.
# See MySQLdb/cursors.py in the source distribution.
return cursor._last_executed

Could this have something to do with the version of django and/or mysql?

I'm running django 1.5 and MySQL 5.5.19, and MySQLdb 1.2.3. I just
tried this and that does not exist on my system:

$ python
Python 2.6.7 (r267:88850, Jan 11 2012, 06:42:34)
[GCC 4.0.1 (Apple Inc. build 5490)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>> conn = MySQLdb.connect(host, user, passwd, db)
>>> cursor = conn.cursor()
>>> print cursor._last_executed
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Cursor' object has no attribute '_last_executed'
>>> print cursor.__dict__
{'_result': None, 'description': None, 'rownumber': None, 'messages':
[], '_executed': None, 'errorhandler': <bound method
Connection.defaulterrorhandler of <_mysql.connection open to
'localhost' at 889810>>, 'rowcount': -1, 'connection': <weakproxy at
0x62f630 to Connection at 0x889810>, 'description_flags': None,
'arraysize': 1, '_info': None, 'lastrowid': None, '_warnings': 0}

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment