diff --git a/mysql/MySQLdb.py b/mysql/MySQLdb.py index 591b077..9b71f7d 100644 --- a/mysql/MySQLdb.py +++ b/mysql/MySQLdb.py @@ -25,7 +25,10 @@ class Cursor: self.result = None self.arraysize = None self.warnings = 1 - + +## def __del__(self): +## self.result = None +## def setinputsizes(self, size): pass def setoutputsizes(self, size): pass @@ -115,6 +118,8 @@ class Connection: self.db.close() def commit(self): pass + + def rollback(self): raise OperationalError, "transactions not supported" def cursor(self, name=''): return self.CursorClass(self, name) diff --git a/mysql/_mysqlmodule.c b/mysql/_mysqlmodule.c index 5832563..5c1e8a9 100644 --- a/mysql/_mysqlmodule.c +++ b/mysql/_mysqlmodule.c @@ -68,6 +68,7 @@ _mysql_Exception(c) PyTuple_SET_ITEM(t, 0, PyInt_FromLong((long)merr)); PyTuple_SET_ITEM(t, 1, PyString_FromString(mysql_error(&(c->connection)))); PyErr_SetObject(e, t); + Py_DECREF(t); return NULL; } @@ -358,7 +359,6 @@ _mysql_ResultObject_New(conn, result) if (n) { r->converter = PyMem_Malloc(n*sizeof(PyObject *)); fields = mysql_fetch_fields(result); - r->fields = fields; for (i=0; iconverter[i]) v = PyObject_CallFunction(self->converter[i], - "s#", - row[i], length[i]); + "s#", + row[i], + (int)length[i]); else v = PyString_FromStringAndSize(row[i], - length[i]); + (int)length[i]); if (!v) goto error; } else { @@ -991,7 +997,7 @@ _mysql_ResultObject_dealloc(self) _mysql_ResultObject *self; { int i; - if (self->result) mysql_free_result(self->result); + mysql_free_result(self->result); Py_DECREF(self->conn); for (i=0; infields; i++) Py_XDECREF(self->converter[i]); PyMem_Free((char *) self->converter); @@ -1097,7 +1103,7 @@ _mysql_ConnectionObject_setattr(c, name, v) { if (v == NULL) { PyErr_SetString(PyExc_AttributeError, - "can't delete file attributes"); + "can't delete connection attributes"); return -1; } return PyMember_Set((char *)c, _mysql_ConnectionObject_memberlist, name, v);