More precise get_autocommit based on server_status.

This commit is contained in:
INADA Naoki
2013-10-02 02:10:02 +09:00
parent c8b2744ea2
commit 3dbf035fa5
2 changed files with 23 additions and 14 deletions

View File

@ -240,21 +240,10 @@ class Connection(_mysql.connection):
def autocommit(self, on):
on = bool(on)
if self.get_autocommit() != on:
_mysql.connection.autocommit(self, on)
self._autocommit = on
def get_autocommit(self):
if self._autocommit is None:
self._update_autocommit()
return self._autocommit
def _update_autocommit(self):
cursor = cursors.Cursor(self)
cursor.execute("SELECT @@AUTOCOMMIT")
row = cursor.fetchone()
self._autocommit = bool(row[0])
cursor.close()
def cursor(self, cursorclass=None):
"""

View File

@ -893,6 +893,20 @@ _mysql_ConnectionObject_autocommit(
return Py_None;
}
static char _mysql_ConnectionObject_get_autocommit__doc__[] =
"Get the autocommit mode. True when enable; False when disable.\n";
static PyObject *
_mysql_ConnectionObject_get_autocommit(
_mysql_ConnectionObject *self,
PyObject *args)
{
if (self->connection.server_status & SERVER_STATUS_AUTOCOMMIT) {
Py_RETURN_TRUE;
}
Py_RETURN_FALSE;
}
static char _mysql_ConnectionObject_commit__doc__[] =
"Commits the current transaction\n\
";
@ -2317,6 +2331,12 @@ static PyMethodDef _mysql_ConnectionObject_methods[] = {
METH_VARARGS,
_mysql_ConnectionObject_autocommit__doc__
},
{
"get_autocommit",
(PyCFunction)_mysql_ConnectionObject_get_autocommit,
METH_NOARGS,
_mysql_ConnectionObject_get_autocommit__doc__
},
{
"commit",
(PyCFunction)_mysql_ConnectionObject_commit,