Brought documentation for sqlite3 module up-to-date. Fixed Issue1625205 which

complained about commit, rollback and close not being documented.
This commit is contained in:
Gerhard Häring 2008-03-29 01:27:37 +00:00
parent 554d4f0c13
commit 4130930b4c
2 changed files with 59 additions and 5 deletions

View File

@ -0,0 +1,16 @@
import sqlite3
con = sqlite3.connect(":memory:")
con.execute("create table person (id integer primary key, firstname varchar unique)")
# Successful, con.commit() is called automatically afterwards
with con:
con.execute("insert into person(firstname) values (?)", ("Joe",))
# con.rollback() is called after the with block finishes with an exception, the
# exception is still raised and must be catched
try:
with con:
con.execute("insert into person(firstname) values (?)", ("Joe",))
except sqlite3.IntegrityError:
print "couldn't add Joe twice"

View File

@ -232,6 +232,24 @@ A :class:`Connection` instance has the following attributes and methods:
:class:`sqlite3.Cursor`. :class:`sqlite3.Cursor`.
.. method:: Connection.commit()
This method commits the current transaction. If you don't call this method,
anything you did since the last call to commit() is not visible from from
other database connections. If you wonder why you don't see the data you've
written to the database, please check you didn't forget to call this method.
.. method:: Connection.rollback()
This method rolls back any changes to the database since the last call to
:meth:`commit`.
.. method:: Connection.close()
This closes the database connection. Note that this does not automatically
call :meth:`commit`. If you just close your database connection without
calling :meth:`commit` first, your changes will be lost!
.. method:: Connection.execute(sql, [parameters]) .. method:: Connection.execute(sql, [parameters])
This is a nonstandard shortcut that creates an intermediate cursor object by This is a nonstandard shortcut that creates an intermediate cursor object by
@ -245,7 +263,6 @@ A :class:`Connection` instance has the following attributes and methods:
calling the cursor method, then calls the cursor's :meth:`executemany` method calling the cursor method, then calls the cursor's :meth:`executemany` method
with the parameters given. with the parameters given.
.. method:: Connection.executescript(sql_script) .. method:: Connection.executescript(sql_script)
This is a nonstandard shortcut that creates an intermediate cursor object by This is a nonstandard shortcut that creates an intermediate cursor object by
@ -332,6 +349,19 @@ A :class:`Connection` instance has the following attributes and methods:
one. All necessary constants are available in the :mod:`sqlite3` module. one. All necessary constants are available in the :mod:`sqlite3` module.
.. method:: Connection.set_progress_handler(handler, n)
.. versionadded:: 2.6
This routine registers a callback. The callback is invoked for every *n*
instructions of the SQLite virtual machine. This is useful if you want to
get called from SQLite during long-running operations, for example to update
a GUI.
If you want to clear any previously installed progress handler, call the
method with :const:`None` for *handler*.
.. attribute:: Connection.row_factory .. attribute:: Connection.row_factory
You can change this attribute to a callable that accepts the cursor and the You can change this attribute to a callable that accepts the cursor and the
@ -701,10 +731,6 @@ Otherwise leave it at its default, which will result in a plain "BEGIN"
statement, or set it to one of SQLite's supported isolation levels: DEFERRED, statement, or set it to one of SQLite's supported isolation levels: DEFERRED,
IMMEDIATE or EXCLUSIVE. IMMEDIATE or EXCLUSIVE.
As the :mod:`sqlite3` module needs to keep track of the transaction state, you
should not use ``OR ROLLBACK`` or ``ON CONFLICT ROLLBACK`` in your SQL. Instead,
catch the :exc:`IntegrityError` and call the :meth:`rollback` method of the
connection yourself.
Using pysqlite efficiently Using pysqlite efficiently
@ -736,3 +762,15 @@ case-insensitively by name:
.. literalinclude:: ../includes/sqlite3/rowclass.py .. literalinclude:: ../includes/sqlite3/rowclass.py
Using the connection as a context manager
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
.. versionadded:: 2.6
Connection objects can be used as context managers
that automatically commit or rollback transactions. In the event of an
exception, the transaction is rolled back; otherwise, the transaction is
committed:
.. literalinclude:: ../includes/sqlite3/ctx_manager.py