diff options
Diffstat (limited to 'MySQLdb/connections.py')
-rw-r--r-- | MySQLdb/connections.py | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/MySQLdb/connections.py b/MySQLdb/connections.py index 6bc1613..908706a 100644 --- a/MySQLdb/connections.py +++ b/MySQLdb/connections.py @@ -139,6 +139,11 @@ class Connection(_mysql.connection): local_infile integer, non-zero enables LOAD LOCAL INFILE; zero disables + autocommit + If False (default), autocommit is disabled. + If True, autocommit is enabled. + If None, autocommit isn't set and server default is used. + There are a number of undocumented, non-standard methods. See the documentation for the MySQL C API for some hints on what they do. @@ -182,6 +187,9 @@ class Connection(_mysql.connection): kwargs2['client_flag'] = client_flag + # PEP-249 requires autocommit to be initially off + autocommit = kwargs2.pop('autocommit', False) + super(Connection, self).__init__(*args, **kwargs2) self.cursorclass = cursorclass self.encoders = dict([ (k, v) for k, v in conv.items() @@ -225,10 +233,15 @@ class Connection(_mysql.connection): self.encoders[types.UnicodeType] = unicode_literal self._transactional = self.server_capabilities & CLIENT.TRANSACTIONS if self._transactional: - # PEP-249 requires autocommit to be initially off - self.autocommit(False) + if autocommit is not None: + self.autocommit(autocommit) self.messages = [] + def autocommit(self, on): + on = bool(on) + if self.get_autocommit() != on: + _mysql.connection.autocommit(self, on) + def cursor(self, cursorclass=None): """ @@ -241,6 +254,8 @@ class Connection(_mysql.connection): return (cursorclass or self.cursorclass)(self) def __enter__(self): + if self.get_autocommit(): + self.query("BEGIN") return self.cursor() def __exit__(self, exc, value, tb): |