summaryrefslogtreecommitdiffstats
path: root/Doc/library/sqlite3.rst
diff options
context:
space:
mode:
authorR David Murray <rdmurray@bitdance.com>2012-10-01 00:44:43 (GMT)
committerR David Murray <rdmurray@bitdance.com>2012-10-01 00:44:43 (GMT)
commit6db2335f77bc6a3051cd7408c2c69871a608fa57 (patch)
tree7a193062052f6719a910c646ed0cdf744111d5b1 /Doc/library/sqlite3.rst
parentcb2916a7144679cdc9a5df430dfc1344e02243fb (diff)
downloadcpython-6db2335f77bc6a3051cd7408c2c69871a608fa57.zip
cpython-6db2335f77bc6a3051cd7408c2c69871a608fa57.tar.gz
cpython-6db2335f77bc6a3051cd7408c2c69871a608fa57.tar.bz2
Fix sqlite3 class markup.
Diffstat (limited to 'Doc/library/sqlite3.rst')
-rw-r--r--Doc/library/sqlite3.rst430
1 files changed, 215 insertions, 215 deletions
diff --git a/Doc/library/sqlite3.rst b/Doc/library/sqlite3.rst
index 950da95..93f6d82 100644
--- a/Doc/library/sqlite3.rst
+++ b/Doc/library/sqlite3.rst
@@ -222,238 +222,238 @@ Connection Objects
A SQLite database connection has the following attributes and methods:
-.. attribute:: Connection.isolation_level
+ .. attribute:: isolation_level
- Get or set the current isolation level. :const:`None` for autocommit mode or
- one of "DEFERRED", "IMMEDIATE" or "EXCLUSIVE". See section
- :ref:`sqlite3-controlling-transactions` for a more detailed explanation.
+ Get or set the current isolation level. :const:`None` for autocommit mode or
+ one of "DEFERRED", "IMMEDIATE" or "EXCLUSIVE". See section
+ :ref:`sqlite3-controlling-transactions` for a more detailed explanation.
-.. attribute:: Connection.in_transaction
+ .. attribute:: in_transaction
- :const:`True` if a transaction is active (there are uncommitted changes),
- :const:`False` otherwise. Read-only attribute.
+ :const:`True` if a transaction is active (there are uncommitted changes),
+ :const:`False` otherwise. Read-only attribute.
- .. versionadded:: 3.2
+ .. versionadded:: 3.2
-.. method:: Connection.cursor([cursorClass])
+ .. method:: cursor([cursorClass])
- The cursor method accepts a single optional parameter *cursorClass*. If
- supplied, this must be a custom cursor class that extends
- :class:`sqlite3.Cursor`.
+ The cursor method accepts a single optional parameter *cursorClass*. If
+ supplied, this must be a custom cursor class that extends
+ :class:`sqlite3.Cursor`.
-.. method:: Connection.commit()
+ .. method:: 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
- 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.
+ 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
+ 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()
+ .. method:: rollback()
- This method rolls back any changes to the database since the last call to
- :meth:`commit`.
+ This method rolls back any changes to the database since the last call to
+ :meth:`commit`.
-.. method:: Connection.close()
+ .. method:: 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!
+ 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:: execute(sql, [parameters])
- This is a nonstandard shortcut that creates an intermediate cursor object by
- calling the cursor method, then calls the cursor's :meth:`execute
- <Cursor.execute>` method with the parameters given.
+ This is a nonstandard shortcut that creates an intermediate cursor object by
+ calling the cursor method, then calls the cursor's :meth:`execute
+ <Cursor.execute>` method with the parameters given.
-.. method:: Connection.executemany(sql, [parameters])
+ .. method:: executemany(sql, [parameters])
- This is a nonstandard shortcut that creates an intermediate cursor object by
- calling the cursor method, then calls the cursor's :meth:`executemany
- <Cursor.executemany>` method with the parameters given.
+ This is a nonstandard shortcut that creates an intermediate cursor object by
+ calling the cursor method, then calls the cursor's :meth:`executemany
+ <Cursor.executemany>` method with the parameters given.
-.. method:: Connection.executescript(sql_script)
+ .. method:: executescript(sql_script)
- This is a nonstandard shortcut that creates an intermediate cursor object by
- calling the cursor method, then calls the cursor's :meth:`executescript
- <Cursor.executescript>` method with the parameters given.
+ This is a nonstandard shortcut that creates an intermediate cursor object by
+ calling the cursor method, then calls the cursor's :meth:`executescript
+ <Cursor.executescript>` method with the parameters given.
-.. method:: Connection.create_function(name, num_params, func)
+ .. method:: create_function(name, num_params, func)
- Creates a user-defined function that you can later use from within SQL
- statements under the function name *name*. *num_params* is the number of
- parameters the function accepts, and *func* is a Python callable that is called
- as the SQL function.
+ Creates a user-defined function that you can later use from within SQL
+ statements under the function name *name*. *num_params* is the number of
+ parameters the function accepts, and *func* is a Python callable that is called
+ as the SQL function.
- The function can return any of the types supported by SQLite: bytes, str, int,
- float and None.
+ The function can return any of the types supported by SQLite: bytes, str, int,
+ float and None.
- Example:
+ Example:
- .. literalinclude:: ../includes/sqlite3/md5func.py
+ .. literalinclude:: ../includes/sqlite3/md5func.py
-.. method:: Connection.create_aggregate(name, num_params, aggregate_class)
+ .. method:: create_aggregate(name, num_params, aggregate_class)
- Creates a user-defined aggregate function.
+ Creates a user-defined aggregate function.
- The aggregate class must implement a ``step`` method, which accepts the number
- of parameters *num_params*, and a ``finalize`` method which will return the
- final result of the aggregate.
+ The aggregate class must implement a ``step`` method, which accepts the number
+ of parameters *num_params*, and a ``finalize`` method which will return the
+ final result of the aggregate.
- The ``finalize`` method can return any of the types supported by SQLite:
- bytes, str, int, float and None.
+ The ``finalize`` method can return any of the types supported by SQLite:
+ bytes, str, int, float and None.
- Example:
+ Example:
- .. literalinclude:: ../includes/sqlite3/mysumaggr.py
+ .. literalinclude:: ../includes/sqlite3/mysumaggr.py
-.. method:: Connection.create_collation(name, callable)
+ .. method:: create_collation(name, callable)
- Creates a collation with the specified *name* and *callable*. The callable will
- be passed two string arguments. It should return -1 if the first is ordered
- lower than the second, 0 if they are ordered equal and 1 if the first is ordered
- higher than the second. Note that this controls sorting (ORDER BY in SQL) so
- your comparisons don't affect other SQL operations.
+ Creates a collation with the specified *name* and *callable*. The callable will
+ be passed two string arguments. It should return -1 if the first is ordered
+ lower than the second, 0 if they are ordered equal and 1 if the first is ordered
+ higher than the second. Note that this controls sorting (ORDER BY in SQL) so
+ your comparisons don't affect other SQL operations.
- Note that the callable will get its parameters as Python bytestrings, which will
- normally be encoded in UTF-8.
+ Note that the callable will get its parameters as Python bytestrings, which will
+ normally be encoded in UTF-8.
- The following example shows a custom collation that sorts "the wrong way":
+ The following example shows a custom collation that sorts "the wrong way":
- .. literalinclude:: ../includes/sqlite3/collation_reverse.py
+ .. literalinclude:: ../includes/sqlite3/collation_reverse.py
- To remove a collation, call ``create_collation`` with None as callable::
+ To remove a collation, call ``create_collation`` with None as callable::
- con.create_collation("reverse", None)
+ con.create_collation("reverse", None)
-.. method:: Connection.interrupt()
+ .. method:: interrupt()
- You can call this method from a different thread to abort any queries that might
- be executing on the connection. The query will then abort and the caller will
- get an exception.
+ You can call this method from a different thread to abort any queries that might
+ be executing on the connection. The query will then abort and the caller will
+ get an exception.
-.. method:: Connection.set_authorizer(authorizer_callback)
+ .. method:: set_authorizer(authorizer_callback)
- This routine registers a callback. The callback is invoked for each attempt to
- access a column of a table in the database. The callback should return
- :const:`SQLITE_OK` if access is allowed, :const:`SQLITE_DENY` if the entire SQL
- statement should be aborted with an error and :const:`SQLITE_IGNORE` if the
- column should be treated as a NULL value. These constants are available in the
- :mod:`sqlite3` module.
+ This routine registers a callback. The callback is invoked for each attempt to
+ access a column of a table in the database. The callback should return
+ :const:`SQLITE_OK` if access is allowed, :const:`SQLITE_DENY` if the entire SQL
+ statement should be aborted with an error and :const:`SQLITE_IGNORE` if the
+ column should be treated as a NULL value. These constants are available in the
+ :mod:`sqlite3` module.
- The first argument to the callback signifies what kind of operation is to be
- authorized. The second and third argument will be arguments or :const:`None`
- depending on the first argument. The 4th argument is the name of the database
- ("main", "temp", etc.) if applicable. The 5th argument is the name of the
- inner-most trigger or view that is responsible for the access attempt or
- :const:`None` if this access attempt is directly from input SQL code.
+ The first argument to the callback signifies what kind of operation is to be
+ authorized. The second and third argument will be arguments or :const:`None`
+ depending on the first argument. The 4th argument is the name of the database
+ ("main", "temp", etc.) if applicable. The 5th argument is the name of the
+ inner-most trigger or view that is responsible for the access attempt or
+ :const:`None` if this access attempt is directly from input SQL code.
- Please consult the SQLite documentation about the possible values for the first
- argument and the meaning of the second and third argument depending on the first
- one. All necessary constants are available in the :mod:`sqlite3` module.
+ Please consult the SQLite documentation about the possible values for the first
+ argument and the meaning of the second and third argument depending on the first
+ one. All necessary constants are available in the :mod:`sqlite3` module.
-.. method:: Connection.set_progress_handler(handler, n)
+ .. method:: set_progress_handler(handler, n)
- 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.
+ 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*.
+ If you want to clear any previously installed progress handler, call the
+ method with :const:`None` for *handler*.
-.. method:: Connection.enable_load_extension(enabled)
+ .. method:: enable_load_extension(enabled)
- This routine allows/disallows the SQLite engine to load SQLite extensions
- from shared libraries. SQLite extensions can define new functions,
- aggregates or whole new virtual table implementations. One well-known
- extension is the fulltext-search extension distributed with SQLite.
+ This routine allows/disallows the SQLite engine to load SQLite extensions
+ from shared libraries. SQLite extensions can define new functions,
+ aggregates or whole new virtual table implementations. One well-known
+ extension is the fulltext-search extension distributed with SQLite.
- Loadable extensions are disabled by default. See [#f1]_.
+ Loadable extensions are disabled by default. See [#f1]_.
- .. versionadded:: 3.2
+ .. versionadded:: 3.2
- .. literalinclude:: ../includes/sqlite3/load_extension.py
+ .. literalinclude:: ../includes/sqlite3/load_extension.py
-.. method:: Connection.load_extension(path)
+ .. method:: load_extension(path)
- This routine loads a SQLite extension from a shared library. You have to
- enable extension loading with :meth:`enable_load_extension` before you can
- use this routine.
+ This routine loads a SQLite extension from a shared library. You have to
+ enable extension loading with :meth:`enable_load_extension` before you can
+ use this routine.
- Loadable extensions are disabled by default. See [#f1]_.
+ Loadable extensions are disabled by default. See [#f1]_.
- .. versionadded:: 3.2
+ .. versionadded:: 3.2
-.. attribute:: Connection.row_factory
+ .. attribute:: row_factory
- You can change this attribute to a callable that accepts the cursor and the
- original row as a tuple and will return the real result row. This way, you can
- implement more advanced ways of returning results, such as returning an object
- that can also access columns by name.
+ You can change this attribute to a callable that accepts the cursor and the
+ original row as a tuple and will return the real result row. This way, you can
+ implement more advanced ways of returning results, such as returning an object
+ that can also access columns by name.
- Example:
+ Example:
- .. literalinclude:: ../includes/sqlite3/row_factory.py
+ .. literalinclude:: ../includes/sqlite3/row_factory.py
- If returning a tuple doesn't suffice and you want name-based access to
- columns, you should consider setting :attr:`row_factory` to the
- highly-optimized :class:`sqlite3.Row` type. :class:`Row` provides both
- index-based and case-insensitive name-based access to columns with almost no
- memory overhead. It will probably be better than your own custom
- dictionary-based approach or even a db_row based solution.
+ If returning a tuple doesn't suffice and you want name-based access to
+ columns, you should consider setting :attr:`row_factory` to the
+ highly-optimized :class:`sqlite3.Row` type. :class:`Row` provides both
+ index-based and case-insensitive name-based access to columns with almost no
+ memory overhead. It will probably be better than your own custom
+ dictionary-based approach or even a db_row based solution.
- .. XXX what's a db_row-based solution?
+ .. XXX what's a db_row-based solution?
-.. attribute:: Connection.text_factory
+ .. attribute:: text_factory
- Using this attribute you can control what objects are returned for the ``TEXT``
- data type. By default, this attribute is set to :class:`str` and the
- :mod:`sqlite3` module will return Unicode objects for ``TEXT``. If you want to
- return bytestrings instead, you can set it to :class:`bytes`.
+ Using this attribute you can control what objects are returned for the ``TEXT``
+ data type. By default, this attribute is set to :class:`str` and the
+ :mod:`sqlite3` module will return Unicode objects for ``TEXT``. If you want to
+ return bytestrings instead, you can set it to :class:`bytes`.
- For efficiency reasons, there's also a way to return :class:`str` objects
- only for non-ASCII data, and :class:`bytes` otherwise. To activate it, set
- this attribute to :const:`sqlite3.OptimizedUnicode`.
+ For efficiency reasons, there's also a way to return :class:`str` objects
+ only for non-ASCII data, and :class:`bytes` otherwise. To activate it, set
+ this attribute to :const:`sqlite3.OptimizedUnicode`.
- You can also set it to any other callable that accepts a single bytestring
- parameter and returns the resulting object.
+ You can also set it to any other callable that accepts a single bytestring
+ parameter and returns the resulting object.
- See the following example code for illustration:
+ See the following example code for illustration:
- .. literalinclude:: ../includes/sqlite3/text_factory.py
+ .. literalinclude:: ../includes/sqlite3/text_factory.py
-.. attribute:: Connection.total_changes
+ .. attribute:: total_changes
- Returns the total number of database rows that have been modified, inserted, or
- deleted since the database connection was opened.
+ Returns the total number of database rows that have been modified, inserted, or
+ deleted since the database connection was opened.
-.. attribute:: Connection.iterdump
+ .. attribute:: iterdump
- Returns an iterator to dump the database in an SQL text format. Useful when
- saving an in-memory database for later restoration. This function provides
- the same capabilities as the :kbd:`.dump` command in the :program:`sqlite3`
- shell.
+ Returns an iterator to dump the database in an SQL text format. Useful when
+ saving an in-memory database for later restoration. This function provides
+ the same capabilities as the :kbd:`.dump` command in the :program:`sqlite3`
+ shell.
- Example::
+ Example::
- # Convert file existing_db.db to SQL dump file dump.sql
- import sqlite3, os
+ # Convert file existing_db.db to SQL dump file dump.sql
+ import sqlite3, os
- con = sqlite3.connect('existing_db.db')
- with open('dump.sql', 'w') as f:
- for line in con.iterdump():
- f.write('%s\n' % line)
+ con = sqlite3.connect('existing_db.db')
+ with open('dump.sql', 'w') as f:
+ for line in con.iterdump():
+ f.write('%s\n' % line)
.. _sqlite3-cursor-objects:
@@ -465,110 +465,110 @@ Cursor Objects
A :class:`Cursor` instance has the following attributes and methods.
-.. method:: Cursor.execute(sql, [parameters])
+ .. method:: execute(sql, [parameters])
- Executes an SQL statement. The SQL statement may be parametrized (i. e.
- placeholders instead of SQL literals). The :mod:`sqlite3` module supports two
- kinds of placeholders: question marks (qmark style) and named placeholders
- (named style).
+ Executes an SQL statement. The SQL statement may be parametrized (i. e.
+ placeholders instead of SQL literals). The :mod:`sqlite3` module supports two
+ kinds of placeholders: question marks (qmark style) and named placeholders
+ (named style).
- Here's an example of both styles:
+ Here's an example of both styles:
- .. literalinclude:: ../includes/sqlite3/execute_1.py
+ .. literalinclude:: ../includes/sqlite3/execute_1.py
- :meth:`execute` will only execute a single SQL statement. If you try to execute
- more than one statement with it, it will raise a Warning. Use
- :meth:`executescript` if you want to execute multiple SQL statements with one
- call.
+ :meth:`execute` will only execute a single SQL statement. If you try to execute
+ more than one statement with it, it will raise a Warning. Use
+ :meth:`executescript` if you want to execute multiple SQL statements with one
+ call.
-.. method:: Cursor.executemany(sql, seq_of_parameters)
+ .. method:: executemany(sql, seq_of_parameters)
- Executes an SQL command against all parameter sequences or mappings found in
- the sequence *sql*. The :mod:`sqlite3` module also allows using an
- :term:`iterator` yielding parameters instead of a sequence.
+ Executes an SQL command against all parameter sequences or mappings found in
+ the sequence *sql*. The :mod:`sqlite3` module also allows using an
+ :term:`iterator` yielding parameters instead of a sequence.
- .. literalinclude:: ../includes/sqlite3/executemany_1.py
+ .. literalinclude:: ../includes/sqlite3/executemany_1.py
- Here's a shorter example using a :term:`generator`:
+ Here's a shorter example using a :term:`generator`:
- .. literalinclude:: ../includes/sqlite3/executemany_2.py
+ .. literalinclude:: ../includes/sqlite3/executemany_2.py
-.. method:: Cursor.executescript(sql_script)
+ .. method:: executescript(sql_script)
- This is a nonstandard convenience method for executing multiple SQL statements
- at once. It issues a ``COMMIT`` statement first, then executes the SQL script it
- gets as a parameter.
+ This is a nonstandard convenience method for executing multiple SQL statements
+ at once. It issues a ``COMMIT`` statement first, then executes the SQL script it
+ gets as a parameter.
- *sql_script* can be an instance of :class:`str` or :class:`bytes`.
+ *sql_script* can be an instance of :class:`str` or :class:`bytes`.
- Example:
+ Example:
- .. literalinclude:: ../includes/sqlite3/executescript.py
+ .. literalinclude:: ../includes/sqlite3/executescript.py
-.. method:: Cursor.fetchone()
+ .. method:: fetchone()
- Fetches the next row of a query result set, returning a single sequence,
- or :const:`None` when no more data is available.
+ Fetches the next row of a query result set, returning a single sequence,
+ or :const:`None` when no more data is available.
-.. method:: Cursor.fetchmany(size=cursor.arraysize)
+ .. method:: fetchmany(size=cursor.arraysize)
- Fetches the next set of rows of a query result, returning a list. An empty
- list is returned when no more rows are available.
+ Fetches the next set of rows of a query result, returning a list. An empty
+ list is returned when no more rows are available.
- The number of rows to fetch per call is specified by the *size* parameter.
- If it is not given, the cursor's arraysize determines the number of rows
- to be fetched. The method should try to fetch as many rows as indicated by
- the size parameter. If this is not possible due to the specified number of
- rows not being available, fewer rows may be returned.
+ The number of rows to fetch per call is specified by the *size* parameter.
+ If it is not given, the cursor's arraysize determines the number of rows
+ to be fetched. The method should try to fetch as many rows as indicated by
+ the size parameter. If this is not possible due to the specified number of
+ rows not being available, fewer rows may be returned.
- Note there are performance considerations involved with the *size* parameter.
- For optimal performance, it is usually best to use the arraysize attribute.
- If the *size* parameter is used, then it is best for it to retain the same
- value from one :meth:`fetchmany` call to the next.
+ Note there are performance considerations involved with the *size* parameter.
+ For optimal performance, it is usually best to use the arraysize attribute.
+ If the *size* parameter is used, then it is best for it to retain the same
+ value from one :meth:`fetchmany` call to the next.
-.. method:: Cursor.fetchall()
+ .. method:: fetchall()
- Fetches all (remaining) rows of a query result, returning a list. Note that
- the cursor's arraysize attribute can affect the performance of this operation.
- An empty list is returned when no rows are available.
+ Fetches all (remaining) rows of a query result, returning a list. Note that
+ the cursor's arraysize attribute can affect the performance of this operation.
+ An empty list is returned when no rows are available.
-.. attribute:: Cursor.rowcount
+ .. attribute:: rowcount
- Although the :class:`Cursor` class of the :mod:`sqlite3` module implements this
- attribute, the database engine's own support for the determination of "rows
- affected"/"rows selected" is quirky.
+ Although the :class:`Cursor` class of the :mod:`sqlite3` module implements this
+ attribute, the database engine's own support for the determination of "rows
+ affected"/"rows selected" is quirky.
- For :meth:`executemany` statements, the number of modifications are summed up
- into :attr:`rowcount`.
+ For :meth:`executemany` statements, the number of modifications are summed up
+ into :attr:`rowcount`.
- As required by the Python DB API Spec, the :attr:`rowcount` attribute "is -1 in
- case no ``executeXX()`` has been performed on the cursor or the rowcount of the
- last operation is not determinable by the interface". This includes ``SELECT``
- statements because we cannot determine the number of rows a query produced
- until all rows were fetched.
+ As required by the Python DB API Spec, the :attr:`rowcount` attribute "is -1 in
+ case no ``executeXX()`` has been performed on the cursor or the rowcount of the
+ last operation is not determinable by the interface". This includes ``SELECT``
+ statements because we cannot determine the number of rows a query produced
+ until all rows were fetched.
- With SQLite versions before 3.6.5, :attr:`rowcount` is set to 0 if
- you make a ``DELETE FROM table`` without any condition.
+ With SQLite versions before 3.6.5, :attr:`rowcount` is set to 0 if
+ you make a ``DELETE FROM table`` without any condition.
-.. attribute:: Cursor.lastrowid
+ .. attribute:: lastrowid
- This read-only attribute provides the rowid of the last modified row. It is
- only set if you issued a ``INSERT`` statement using the :meth:`execute`
- method. For operations other than ``INSERT`` or when :meth:`executemany` is
- called, :attr:`lastrowid` is set to :const:`None`.
+ This read-only attribute provides the rowid of the last modified row. It is
+ only set if you issued a ``INSERT`` statement using the :meth:`execute`
+ method. For operations other than ``INSERT`` or when :meth:`executemany` is
+ called, :attr:`lastrowid` is set to :const:`None`.
-.. attribute:: Cursor.description
+ .. attribute:: description
- This read-only attribute provides the column names of the last query. To
- remain compatible with the Python DB API, it returns a 7-tuple for each
- column where the last six items of each tuple are :const:`None`.
+ This read-only attribute provides the column names of the last query. To
+ remain compatible with the Python DB API, it returns a 7-tuple for each
+ column where the last six items of each tuple are :const:`None`.
- It is set for ``SELECT`` statements without any matching rows as well.
+ It is set for ``SELECT`` statements without any matching rows as well.
.. _sqlite3-row-objects: