# HG changeset patch # User adustman # Date 1266546071 0 # Node ID 24fa6a40c7069bc7ee376e549227a40eec2c0547 # Parent c0c00294239bda575c689d329f4c940fc2d91795 Added a simple_fetch_row() to the result object that simply returns one row as a tuple of strings (or None for NULL values). Result objects are also now iterators which internally use simple_fetch_row(). diff -r c0c00294239b -r 24fa6a40c706 src/results.c --- a/src/results.c Thu Feb 18 23:47:51 2010 +0000 +++ b/src/results.c Fri Feb 19 02:21:11 2010 +0000 @@ -429,6 +429,85 @@ return NULL; } +static char _mysql_ResultObject_simple_fetch_row__doc__[] = +"simple_fetchrow()\n\ + Fetches one row as a tuple of strings.\n\ + NULL is returned as None.\n\ +"; + +static PyObject * +_mysql_ResultObject_simple_fetch_row( + _mysql_ResultObject *self, + PyObject *unused) +{ + unsigned int n, i; + unsigned long *length; + PyObject *r=NULL; + MYSQL_ROW row; + + check_result_connection(self); + + if (!self->use) + row = mysql_fetch_row(self->result); + else { + Py_BEGIN_ALLOW_THREADS; + row = mysql_fetch_row(self->result); + Py_END_ALLOW_THREADS; + } + if (!row && mysql_errno(&(((_mysql_ConnectionObject *)(self->conn))->connection))) { + _mysql_Exception((_mysql_ConnectionObject *)self->conn); + goto error; + } + if (!row) { + Py_INCREF(Py_None); + return Py_None; + } + + n = mysql_num_fields(self->result); + if (!(r = PyTuple_New(n))) return NULL; + length = mysql_fetch_lengths(self->result); + for (i=0; i