mirror of
https://github.com/PyMySQL/mysqlclient.git
synced 2025-08-16 12:27:03 +08:00
Finally, a definitive way to determine if transactions are available.
This commit is contained in:
@ -451,11 +451,7 @@ class Connection:
|
|||||||
self.cursorclass = Cursor
|
self.cursorclass = Cursor
|
||||||
self.db = apply(connect, (), kwargs)
|
self.db = apply(connect, (), kwargs)
|
||||||
self.quote_conv[types.StringType] = self.Thing2Literal
|
self.quote_conv[types.StringType] = self.Thing2Literal
|
||||||
self.db.query('show variables')
|
self._transactional = self.db.server_capabilities & CLIENT.TRANSACTIONS
|
||||||
r = self.db.store_result()
|
|
||||||
vars = r.fetch_row(0)
|
|
||||||
self._server_vars = {}
|
|
||||||
for k,v in vars: self._server_vars[k] = v
|
|
||||||
if _threading: self.__lock = _threading.Lock()
|
if _threading: self.__lock = _threading.Lock()
|
||||||
|
|
||||||
if _threading:
|
if _threading:
|
||||||
@ -473,12 +469,12 @@ class Connection:
|
|||||||
|
|
||||||
def commit(self):
|
def commit(self):
|
||||||
"""Commit the current transaction."""
|
"""Commit the current transaction."""
|
||||||
if self._server_vars.get('have_bdb','NO') == 'YES':
|
if self._transactional:
|
||||||
self.db.query("COMMIT")
|
self.db.query("COMMIT")
|
||||||
|
|
||||||
def rollback(self):
|
def rollback(self):
|
||||||
"""Rollback the current transaction."""
|
"""Rollback the current transaction."""
|
||||||
if self._server_vars.get('have_bdb','NO') == 'YES':
|
if self._transactional:
|
||||||
self.db.query("ROLLBACK")
|
self.db.query("ROLLBACK")
|
||||||
else: raise NotSupportedError, "Not supported by server"
|
else: raise NotSupportedError, "Not supported by server"
|
||||||
|
|
||||||
|
@ -11,4 +11,4 @@ CHANGE_USER = 512
|
|||||||
INTERACTIVE = 1024
|
INTERACTIVE = 1024
|
||||||
SSL = 2048
|
SSL = 2048
|
||||||
IGNORE_SIGPIPE = 4096
|
IGNORE_SIGPIPE = 4096
|
||||||
TRANSACTIONS = 8196
|
TRANSACTIONS = 8192 # mysql_com.h is WRONG
|
||||||
|
@ -1245,6 +1245,8 @@ _mysql_ConnectionObject_getattr(
|
|||||||
return PyInt_FromLong((long)(self->open));
|
return PyInt_FromLong((long)(self->open));
|
||||||
if (strcmp(name, "closed") == 0)
|
if (strcmp(name, "closed") == 0)
|
||||||
return PyInt_FromLong((long)!(self->open));
|
return PyInt_FromLong((long)!(self->open));
|
||||||
|
if (strcmp(name, "server_capabilities") == 0)
|
||||||
|
return PyInt_FromLong((long)(self->connection.server_capabilities));
|
||||||
return PyMember_Get((char *)self, _mysql_ConnectionObject_memberlist, name);
|
return PyMember_Get((char *)self, _mysql_ConnectionObject_memberlist, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user