blob: 1d501d58f4996e47e128d00d3815ed434f347827 [file] [log] [blame]
Gerhard Häringeb2e1922006-04-29 23:12:41 +00001\section{\module{sqlite3} ---
2 DB-API 2.0 interface for SQLite databases}
3
4\declaremodule{builtin}{sqlite3}
Fred Drake6550f032006-05-01 06:25:58 +00005\modulesynopsis{A DB-API 2.0 implementation using SQLite 3.x.}
Gerhard Häringeb2e1922006-04-29 23:12:41 +00006
7
8
9The module defines the following:
10
11\begin{datadesc}{PARSE_DECLTYPES}
12This constant is meant to be used with the detect_types parameter of the connect function.
13
14Setting it makes the sqlite3 module parse the declared type for each column it
15returns. It will parse out the first word of the declared type, i. e. for
16"integer primary key", it will parse out "integer". Then for that column, it
17will look into pysqlite's converters dictionary and use the converter function
18registered for that type there. Converter names are case-sensitive!
19\end{datadesc}
20
21
22\begin{datadesc}{PARSE_COLNAMES}
Gerhard Häringeb2e1922006-04-29 23:12:41 +000023Setting this makes pysqlite parse the column name for each column it returns.
24It will look for a string formed [mytype] in there, and then decide that
25'mytype' is the type of the column. It will try to find an entry of 'mytype' in
26the converters dictionary and then use the converter function found there to
27return the value. The column name found in cursor.description is only the first
28word of the column name, i. e. if you use something like 'as "x [datetime]"'
29in your SQL, then pysqlite will parse out everything until the first blank for
30the column name: the column name would simply be "x".
31\end{datadesc}
32
33\begin{funcdesc}{connect}{database\optional{, timeout, isolation_level, detect_types, check_same_thread, factory}}
34Opens a connection to the SQLite database file \var{database}. You can use
35\code{":memory:"} to open a database connection to a database that resides in
36RAM instead of on disk.
37
38When a database is accessed by multiple connections, and one of the processes
39modifies the database, the SQLite database is locked until that transaction is
40committed. The \var{timeout} parameter specifies how long the connection should
41wait for the lock to go away until raising an exception. The default for the
42timeout parameter is 5.0 (five seconds).
43
44For the \var{isolation_level} parameter, please see TODO: link property of
45Connection objects.
46
47SQLite natively supports only the types TEXT, INTEGER, FLOAT, BLOB and NULL. If
48you want to use other types, like you have to add support for them yourself.
49The \var{detect_types} parameter and the using custom *converters* registered with
50the module-level *register_converter* function allow you to easily do that.
51
52\var{detect_types} defaults to 0 (i. e. off, no type detection), you can set it
53to any combination of *PARSE_DECLTYPES* and *PARSE_COLNAMES* to turn type
54detection on.
55
56By default, the sqlite3 module uses its Connection class for the connect call.
57You can, however, subclass the Connection class and make .connect() use your
58class instead by providing your class for the \var{factory} parameter.
59
60Consult the section `4. SQLite and Python types`_ of this manual for details.
61
62The sqlite3 module internally uses a statement cache to avoid SQL parsing
63overhead. If you want to explicitly set the number of statements that are
64cached for the connection, you can set the \var{cached_statements} parameter.
65The currently implemented default is to cache 100 statements.
66\end{funcdesc}
67
68\begin{funcdesc}{register_converter}{typename, callable}
Gerhard Häringeb2e1922006-04-29 23:12:41 +000069Registers a callable to convert a bytestring from the database into a custom
70Python type. The callable will be invoked for all database values that are of
71the type \var{typename}. Confer the parameter **detect_types** of the
72**connect** method for how the type detection works. Note that the case of
73\var{typename} and the name of the type in your query must match!
74\end{funcdesc}
75
76\begin{funcdesc}{register_adapter}{type, callable}
77Registers a callable to convert the custom Python type \var{type} into one of
78SQLite's supported types. The callable \var{callable} accepts as single
79parameter the Python value, and must return a value of the following types:
80int, long, float, str (UTF-8 encoded), unicode or buffer.
81\end{funcdesc}
82
83
Fred Drake6550f032006-05-01 06:25:58 +000084\subsection{Connection Objects \label{sqlite3-Connection-Objects}}
Gerhard Häringeb2e1922006-04-29 23:12:41 +000085
86A \class{Connection} instance has the following attributes and methods:
87
Fred Drake6550f032006-05-01 06:25:58 +000088\begin{memberdesc}{isolation_level}
89 Get or set the current isolation level. None for autocommit mode or one
90 of "DEFERRED", "IMMEDIATE" or "EXLUSIVE". See `5. Controlling
91 Transactions`_ for a more detailed explanation.
92\end{memberdesc}
Gerhard Häringeb2e1922006-04-29 23:12:41 +000093
94\begin{methoddesc}{cursor}{\optional{cursorClass}}
Fred Drake6550f032006-05-01 06:25:58 +000095 The cursor method accepts a single optional parameter \var{cursorClass}.
96 This is a custom cursor class which must extend \class{sqlite3.Cursor}.
Gerhard Häringeb2e1922006-04-29 23:12:41 +000097\end{methoddesc}
98
99TODO: execute*