annotate Doc/lib/libsqlite3.tex @ 39940:dfd809dcf680 2.5

Bug #1446043: correctly raise a LookupError if an encoding name given to encodings.search_function() contains a dot. (backport from rev. 52075)
author Georg Brandl <georg@python.org>
date Sat, 30 Sep 2006 11:22:35 +0000
parents 07a44bff967f
children 7d79fd1816a8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
1 \section{\module{sqlite3} ---
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
2 DB-API 2.0 interface for SQLite databases}
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
3
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
4 \declaremodule{builtin}{sqlite3}
38065
135b177883c3 - minor clarification in section title
Fred Drake <fdrake@acm.org>
parents: 38046
diff changeset
5 \modulesynopsis{A DB-API 2.0 implementation using SQLite 3.x.}
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
6 \sectionauthor{Gerhard Häring}{gh@ghaering.de}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
7 \versionadded{2.5}
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
8
39812
6a83b2740fc7 Explain SQLite a bit more clearly
Andrew M. Kuchling <amk@amk.ca>
parents: 39296
diff changeset
9 SQLite is a C library that provides a lightweight disk-based database
6a83b2740fc7 Explain SQLite a bit more clearly
Andrew M. Kuchling <amk@amk.ca>
parents: 39296
diff changeset
10 that doesn't require a separate server process and allows accessing
6a83b2740fc7 Explain SQLite a bit more clearly
Andrew M. Kuchling <amk@amk.ca>
parents: 39296
diff changeset
11 the database using a nonstandard variant of the SQL query language.
6a83b2740fc7 Explain SQLite a bit more clearly
Andrew M. Kuchling <amk@amk.ca>
parents: 39296
diff changeset
12 Some applications can use SQLite for internal data storage. It's also
6a83b2740fc7 Explain SQLite a bit more clearly
Andrew M. Kuchling <amk@amk.ca>
parents: 39296
diff changeset
13 possible to prototype an application using SQLite and then port the
6a83b2740fc7 Explain SQLite a bit more clearly
Andrew M. Kuchling <amk@amk.ca>
parents: 39296
diff changeset
14 code to a larger database such as PostgreSQL or Oracle.
6a83b2740fc7 Explain SQLite a bit more clearly
Andrew M. Kuchling <amk@amk.ca>
parents: 39296
diff changeset
15
38639
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
16 pysqlite was written by Gerhard H\"aring and provides a SQL interface
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
17 compliant with the DB-API 2.0 specification described by
39812
6a83b2740fc7 Explain SQLite a bit more clearly
Andrew M. Kuchling <amk@amk.ca>
parents: 39296
diff changeset
18 \pep{249}.
38639
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
19
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
20 To use the module, you must first create a \class{Connection} object
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
21 that represents the database. Here the data will be stored in the
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
22 \file{/tmp/example} file:
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
23
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
24 \begin{verbatim}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
25 conn = sqlite3.connect('/tmp/example')
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
26 \end{verbatim}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
27
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
28 You can also supply the special name \samp{:memory:} to create
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
29 a database in RAM.
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
30
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
31 Once you have a \class{Connection}, you can create a \class{Cursor}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
32 object and call its \method{execute()} method to perform SQL commands:
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
33
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
34 \begin{verbatim}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
35 c = conn.cursor()
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
36
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
37 # Create table
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
38 c.execute('''create table stocks
39815
a4a214bdf8ea Use native SQLite types
Andrew M. Kuchling <amk@amk.ca>
parents: 39812
diff changeset
39 (date text, trans text, symbol text,
a4a214bdf8ea Use native SQLite types
Andrew M. Kuchling <amk@amk.ca>
parents: 39812
diff changeset
40 qty real, price real)''')
38639
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
41
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
42 # Insert a row of data
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
43 c.execute("""insert into stocks
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
44 values ('2006-01-05','BUY','RHAT',100,35.14)""")
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
45 \end{verbatim}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
46
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
47 Usually your SQL operations will need to use values from Python
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
48 variables. You shouldn't assemble your query using Python's string
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
49 operations because doing so is insecure; it makes your program
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
50 vulnerable to an SQL injection attack.
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
51
38642
3fb38351dd39 Mention other placeholders
Andrew M. Kuchling <amk@amk.ca>
parents: 38639
diff changeset
52 Instead, use the DB-API's parameter substitution. Put \samp{?} as a
38639
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
53 placeholder wherever you want to use a value, and then provide a tuple
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
54 of values as the second argument to the cursor's \method{execute()}
38642
3fb38351dd39 Mention other placeholders
Andrew M. Kuchling <amk@amk.ca>
parents: 38639
diff changeset
55 method. (Other database modules may use a different placeholder,
3fb38351dd39 Mention other placeholders
Andrew M. Kuchling <amk@amk.ca>
parents: 38639
diff changeset
56 such as \samp{\%s} or \samp{:1}.) For example:
38639
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
57
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
58 \begin{verbatim}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
59 # Never do this -- insecure!
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
60 symbol = 'IBM'
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
61 c.execute("... where symbol = '%s'" % symbol)
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
62
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
63 # Do this instead
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
64 t = (symbol,)
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
65 c.execute('select * from stocks where symbol=?', t)
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
66
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
67 # Larger example
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
68 for t in (('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
69 ('2006-04-05', 'BUY', 'MSOFT', 1000, 72.00),
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
70 ('2006-04-06', 'SELL', 'IBM', 500, 53.00),
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
71 ):
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
72 c.execute('insert into stocks values (?,?,?,?,?)', t)
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
73 \end{verbatim}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
74
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
75 To retrieve data after executing a SELECT statement, you can either
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
76 treat the cursor as an iterator, call the cursor's \method{fetchone()}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
77 method to retrieve a single matching row,
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
78 or call \method{fetchall()} to get a list of the matching rows.
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
79
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
80 This example uses the iterator form:
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
81
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
82 \begin{verbatim}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
83 >>> c = conn.cursor()
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
84 >>> c.execute('select * from stocks order by price')
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
85 >>> for row in c:
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
86 ... print row
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
87 ...
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
88 (u'2006-01-05', u'BUY', u'RHAT', 100, 35.140000000000001)
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
89 (u'2006-03-28', u'BUY', u'IBM', 1000, 45.0)
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
90 (u'2006-04-06', u'SELL', u'IBM', 500, 53.0)
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
91 (u'2006-04-05', u'BUY', u'MSOFT', 1000, 72.0)
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
92 >>>
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
93 \end{verbatim}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
94
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
95 \begin{seealso}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
96
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
97 \seeurl{http://www.pysqlite.org}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
98 {The pysqlite web page.}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
99
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
100 \seeurl{http://www.sqlite.org}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
101 {The SQLite web page; the documentation describes the syntax and the
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
102 available data types for the supported SQL dialect.}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
103
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
104 \seepep{249}{Database API Specification 2.0}{PEP written by
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
105 Marc-Andr\'e Lemburg.}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
106
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
107 \end{seealso}
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
108
0cd2273bc3b1 Add an SQLite introduction, taken from the 'What's New' text
Andrew M. Kuchling <amk@amk.ca>
parents: 38169
diff changeset
109
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
110 \subsection{Module functions and constants\label{sqlite3-Module-Contents}}
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
111
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
112 \begin{datadesc}{PARSE_DECLTYPES}
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
113 This constant is meant to be used with the \var{detect_types} parameter of the
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
114 \function{connect} function.
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
115
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
116 Setting it makes the \module{sqlite3} module parse the declared type for each column it
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
117 returns. It will parse out the first word of the declared type, i. e. for
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
118 "integer primary key", it will parse out "integer". Then for that column, it
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
119 will look into the converters dictionary and use the converter function
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
120 registered for that type there. Converter names are case-sensitive!
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
121 \end{datadesc}
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
122
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
123
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
124 \begin{datadesc}{PARSE_COLNAMES}
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
125 This constant is meant to be used with the \var{detect_types} parameter of the
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
126 \function{connect} function.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
127
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
128 Setting this makes the SQLite interface parse the column name for each column
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
129 it returns. It will look for a string formed [mytype] in there, and then
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
130 decide that 'mytype' is the type of the column. It will try to find an entry of
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
131 'mytype' in the converters dictionary and then use the converter function found
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
132 there to return the value. The column name found in \member{cursor.description} is only
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
133 the first word of the column name, i. e. if you use something like
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
134 \code{'as "x [datetime]"'} in your SQL, then we will parse out everything until the
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
135 first blank for the column name: the column name would simply be "x".
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
136 \end{datadesc}
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
137
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
138 \begin{funcdesc}{connect}{database\optional{, timeout, isolation_level, detect_types, factory}}
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
139 Opens a connection to the SQLite database file \var{database}. You can use
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
140 \code{":memory:"} to open a database connection to a database that resides in
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
141 RAM instead of on disk.
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
142
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
143 When a database is accessed by multiple connections, and one of the processes
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
144 modifies the database, the SQLite database is locked until that transaction is
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
145 committed. The \var{timeout} parameter specifies how long the connection should
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
146 wait for the lock to go away until raising an exception. The default for the
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
147 timeout parameter is 5.0 (five seconds).
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
148
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
149 For the \var{isolation_level} parameter, please see the \member{isolation_level}
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
150 property of \class{Connection} objects in section~\ref{sqlite3-Connection-IsolationLevel}.
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
151
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
152 SQLite natively supports only the types TEXT, INTEGER, FLOAT, BLOB and NULL. If
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
153 you want to use other types, like you have to add support for them yourself.
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
154 The \var{detect_types} parameter and the using custom \strong{converters} registered with
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
155 the module-level \function{register_converter} function allow you to easily do that.
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
156
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
157 \var{detect_types} defaults to 0 (i. e. off, no type detection), you can set it
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
158 to any combination of \constant{PARSE_DECLTYPES} and \constant{PARSE_COLNAMES} to turn type
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
159 detection on.
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
160
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
161 By default, the \module{sqlite3} module uses its \class{Connection} class for the
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
162 connect call. You can, however, subclass the \class{Connection} class and make
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
163 \function{connect} use your class instead by providing your class for the
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
164 \var{factory} parameter.
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
165
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
166 Consult the section \ref{sqlite3-Types} of this manual for details.
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
167
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
168 The \module{sqlite3} module internally uses a statement cache to avoid SQL parsing
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
169 overhead. If you want to explicitly set the number of statements that are
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
170 cached for the connection, you can set the \var{cached_statements} parameter.
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
171 The currently implemented default is to cache 100 statements.
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
172 \end{funcdesc}
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
173
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
174 \begin{funcdesc}{register_converter}{typename, callable}
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
175 Registers a callable to convert a bytestring from the database into a custom
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
176 Python type. The callable will be invoked for all database values that are of
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
177 the type \var{typename}. Confer the parameter \var{detect_types} of the
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
178 \function{connect} function for how the type detection works. Note that the case of
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
179 \var{typename} and the name of the type in your query must match!
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
180 \end{funcdesc}
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
181
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
182 \begin{funcdesc}{register_adapter}{type, callable}
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
183 Registers a callable to convert the custom Python type \var{type} into one of
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
184 SQLite's supported types. The callable \var{callable} accepts as single
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
185 parameter the Python value, and must return a value of the following types:
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
186 int, long, float, str (UTF-8 encoded), unicode or buffer.
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
187 \end{funcdesc}
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
188
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
189 \begin{funcdesc}{complete_statement}{sql}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
190 Returns \constant{True} if the string \var{sql} one or more complete SQL
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
191 statements terminated by semicolons. It does not verify if the SQL is
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
192 syntactically correct, only if there are no unclosed string literals and if the
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
193 statement is terminated by a semicolon.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
194
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
195 This can be used to build a shell for SQLite, like in the following example:
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
196
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
197 \verbatiminput{sqlite3/complete_statement.py}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
198 \end{funcdesc}
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
199
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
200 \begin{funcdesc}{enable_callback_tracebacks}{flag}
38810
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
201 By default you will not get any tracebacks in user-defined functions,
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
202 aggregates, converters, authorizer callbacks etc. If you want to debug them,
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
203 you can call this function with \var{flag} as True. Afterwards, you will get
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
204 tracebacks from callbacks on \code{sys.stderr}. Use \constant{False} to disable
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
205 the feature again.
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
206 \end{funcdesc}
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
207
38065
135b177883c3 - minor clarification in section title
Fred Drake <fdrake@acm.org>
parents: 38046
diff changeset
208 \subsection{Connection Objects \label{sqlite3-Connection-Objects}}
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
209
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
210 A \class{Connection} instance has the following attributes and methods:
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
211
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
212 \label{sqlite3-Connection-IsolationLevel}
38065
135b177883c3 - minor clarification in section title
Fred Drake <fdrake@acm.org>
parents: 38046
diff changeset
213 \begin{memberdesc}{isolation_level}
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
214 Get or set the current isolation level. None for autocommit mode or one of
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
215 "DEFERRED", "IMMEDIATE" or "EXLUSIVE". See ``Controlling Transactions'',
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
216 section~\ref{sqlite3-Controlling-Transactions}, for a more detailed explanation.
38065
135b177883c3 - minor clarification in section title
Fred Drake <fdrake@acm.org>
parents: 38046
diff changeset
217 \end{memberdesc}
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
218
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
219 \begin{methoddesc}{cursor}{\optional{cursorClass}}
38065
135b177883c3 - minor clarification in section title
Fred Drake <fdrake@acm.org>
parents: 38046
diff changeset
220 The cursor method accepts a single optional parameter \var{cursorClass}.
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
221 If supplied, this must be a custom cursor class that extends
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
222 \class{sqlite3.Cursor}.
38046
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
223 \end{methoddesc}
3f51ffd5d8bf This is the start of documentation for the sqlite3 module. Please feel free to
Gerhard Häring <gh@ghaering.de>
parents:
diff changeset
224
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
225 \begin{methoddesc}{execute}{sql, \optional{parameters}}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
226 This is a nonstandard shortcut that creates an intermediate cursor object by
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
227 calling the cursor method, then calls the cursor's \method{execute} method with the
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
228 parameters given.
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
229 \end{methoddesc}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
230
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
231 \begin{methoddesc}{executemany}{sql, \optional{parameters}}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
232 This is a nonstandard shortcut that creates an intermediate cursor object by
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
233 calling the cursor method, then calls the cursor's \method{executemany} method with the
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
234 parameters given.
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
235 \end{methoddesc}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
236
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
237 \begin{methoddesc}{executescript}{sql_script}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
238 This is a nonstandard shortcut that creates an intermediate cursor object by
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
239 calling the cursor method, then calls the cursor's \method{executescript} method with the
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
240 parameters given.
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
241 \end{methoddesc}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
242
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
243 \begin{methoddesc}{create_function}{name, num_params, func}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
244
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
245 Creates a user-defined function that you can later use from within SQL
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
246 statements under the function name \var{name}. \var{num_params} is the number
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
247 of parameters the function accepts, and \var{func} is a Python callable that is
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
248 called as the SQL function.
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
249
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
250 The function can return any of the types supported by SQLite: unicode, str,
38810
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
251 int, long, float, buffer and None.
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
252
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
253 Example:
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
254
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
255 \verbatiminput{sqlite3/md5func.py}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
256 \end{methoddesc}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
257
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
258 \begin{methoddesc}{create_aggregate}{name, num_params, aggregate_class}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
259
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
260 Creates a user-defined aggregate function.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
261
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
262 The aggregate class must implement a \code{step} method, which accepts the
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
263 number of parameters \var{num_params}, and a \code{finalize} method which
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
264 will return the final result of the aggregate.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
265
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
266 The \code{finalize} method can return any of the types supported by SQLite:
38810
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
267 unicode, str, int, long, float, buffer and None.
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
268
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
269 Example:
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
270
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
271 \verbatiminput{sqlite3/mysumaggr.py}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
272 \end{methoddesc}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
273
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
274 \begin{methoddesc}{create_collation}{name, callable}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
275
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
276 Creates a collation with the specified \var{name} and \var{callable}. The
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
277 callable will be passed two string arguments. It should return -1 if the first
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
278 is ordered lower than the second, 0 if they are ordered equal and 1 if the
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
279 first is ordered higher than the second. Note that this controls sorting
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
280 (ORDER BY in SQL) so your comparisons don't affect other SQL operations.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
281
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
282 Note that the callable will get its parameters as Python bytestrings, which
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
283 will normally be encoded in UTF-8.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
284
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
285 The following example shows a custom collation that sorts "the wrong way":
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
286
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
287 \verbatiminput{sqlite3/collation_reverse.py}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
288
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
289 To remove a collation, call \code{create_collation} with None as callable:
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
290
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
291 \begin{verbatim}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
292 con.create_collation("reverse", None)
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
293 \end{verbatim}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
294 \end{methoddesc}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
295
38810
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
296 \begin{methoddesc}{interrupt}{}
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
297
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
298 You can call this method from a different thread to abort any queries that
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
299 might be executing on the connection. The query will then abort and the caller
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
300 will get an exception.
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
301 \end{methoddesc}
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
302
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
303 \begin{methoddesc}{set_authorizer}{authorizer_callback}
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
304
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
305 This routine registers a callback. The callback is invoked for each attempt to
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
306 access a column of a table in the database. The callback should return
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
307 \constant{SQLITE_OK} if access is allowed, \constant{SQLITE_DENY} if the entire
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
308 SQL statement should be aborted with an error and \constant{SQLITE_IGNORE} if
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
309 the column should be treated as a NULL value. These constants are available in
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
310 the \module{sqlite3} module.
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
311
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
312 The first argument to the callback signifies what kind of operation is to be
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
313 authorized. The second and third argument will be arguments or \constant{None}
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
314 depending on the first argument. The 4th argument is the name of the database
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
315 ("main", "temp", etc.) if applicable. The 5th argument is the name of the
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
316 inner-most trigger or view that is responsible for the access attempt or
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
317 \constant{None} if this access attempt is directly from input SQL code.
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
318
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
319 Please consult the SQLite documentation about the possible values for the first
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
320 argument and the meaning of the second and third argument depending on the
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
321 first one. All necessary constants are available in the \module{sqlite3}
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
322 module.
6f7e64b72a58 Updated documentation for pysqlite 2.3.0 API.
Gerhard Häring <gh@ghaering.de>
parents: 38660
diff changeset
323 \end{methoddesc}
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
324
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
325 \begin{memberdesc}{row_factory}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
326 You can change this attribute to a callable that accepts the cursor and
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
327 the original row as a tuple and will return the real result row. This
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
328 way, you can implement more advanced ways of returning results, such
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
329 as returning an object that can also access columns by name.
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
330
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
331 Example:
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
332
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
333 \verbatiminput{sqlite3/row_factory.py}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
334
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
335 If returning a tuple doesn't suffice and you want name-based
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
336 access to columns, you should consider setting \member{row_factory} to the
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
337 highly-optimized \class{sqlite3.Row} type. \class{Row} provides both
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
338 index-based and case-insensitive name-based access to columns with almost
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
339 no memory overhead. It will probably be better than your own custom
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
340 dictionary-based approach or even a db_row based solution.
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
341 % XXX what's a db_row-based solution?
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
342 \end{memberdesc}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
343
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
344 \begin{memberdesc}{text_factory}
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
345 Using this attribute you can control what objects are returned for the
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
346 TEXT data type. By default, this attribute is set to \class{unicode} and
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
347 the \module{sqlite3} module will return Unicode objects for TEXT. If you want to return
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
348 bytestrings instead, you can set it to \class{str}.
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
349
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
350 For efficiency reasons, there's also a way to return Unicode objects only
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
351 for non-ASCII data, and bytestrings otherwise. To activate it, set this
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
352 attribute to \constant{sqlite3.OptimizedUnicode}.
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
353
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
354 You can also set it to any other callable that accepts a single bytestring
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
355 parameter and returns the resulting object.
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
356
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
357 See the following example code for illustration:
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
358
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
359 \verbatiminput{sqlite3/text_factory.py}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
360 \end{memberdesc}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
361
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
362 \begin{memberdesc}{total_changes}
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
363 Returns the total number of database rows that have been modified, inserted,
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
364 or deleted since the database connection was opened.
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
365 \end{memberdesc}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
366
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
367
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
368
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
369
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
370
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
371 \subsection{Cursor Objects \label{sqlite3-Cursor-Objects}}
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
372
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
373 A \class{Cursor} instance has the following attributes and methods:
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
374
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
375 \begin{methoddesc}{execute}{sql, \optional{parameters}}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
376
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
377 Executes a SQL statement. The SQL statement may be parametrized (i. e.
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
378 placeholders instead of SQL literals). The \module{sqlite3} module supports two kinds of
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
379 placeholders: question marks (qmark style) and named placeholders (named
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
380 style).
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
381
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
382 This example shows how to use parameters with qmark style:
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
383
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
384 \verbatiminput{sqlite3/execute_1.py}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
385
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
386 This example shows how to use the named style:
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
387
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
388 \verbatiminput{sqlite3/execute_2.py}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
389
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
390 \method{execute()} will only execute a single SQL statement. If you try to
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
391 execute more than one statement with it, it will raise a Warning. Use
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
392 \method{executescript()} if you want to execute multiple SQL statements with one
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
393 call.
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
394 \end{methoddesc}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
395
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
396
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
397 \begin{methoddesc}{executemany}{sql, seq_of_parameters}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
398 Executes a SQL command against all parameter sequences or mappings found in the
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
399 sequence \var{sql}. The \module{sqlite3} module also allows
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
400 using an iterator yielding parameters instead of a sequence.
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
401
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
402 \verbatiminput{sqlite3/executemany_1.py}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
403
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
404 Here's a shorter example using a generator:
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
405
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
406 \verbatiminput{sqlite3/executemany_2.py}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
407 \end{methoddesc}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
408
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
409 \begin{methoddesc}{executescript}{sql_script}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
410
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
411 This is a nonstandard convenience method for executing multiple SQL statements
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
412 at once. It issues a COMMIT statement first, then executes the SQL script it
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
413 gets as a parameter.
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
414
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
415 \var{sql_script} can be a bytestring or a Unicode string.
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
416
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
417 Example:
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
418
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
419 \verbatiminput{sqlite3/executescript.py}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
420 \end{methoddesc}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
421
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
422 \begin{memberdesc}{rowcount}
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
423 Although the \class{Cursor} class of the \module{sqlite3} module implements this
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
424 attribute, the database engine's own support for the determination of "rows
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
425 affected"/"rows selected" is quirky.
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
426
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
427 For \code{SELECT} statements, \member{rowcount} is always None because we cannot
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
428 determine the number of rows a query produced until all rows were fetched.
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
429
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
430 For \code{DELETE} statements, SQLite reports \member{rowcount} as 0 if you make a
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
431 \code{DELETE FROM table} without any condition.
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
432
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
433 For \method{executemany} statements, the number of modifications are summed
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
434 up into \member{rowcount}.
38069
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
435
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
436 As required by the Python DB API Spec, the \member{rowcount} attribute "is -1
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
437 in case no executeXX() has been performed on the cursor or the rowcount
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
438 of the last operation is not determinable by the interface".
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
439 \end{memberdesc}
cf19a123a5d9 Further integration of the documentation for the sqlite3 module. There's still
Gerhard Häring <gh@ghaering.de>
parents: 38065
diff changeset
440
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
441 \subsection{SQLite and Python types\label{sqlite3-Types}}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
442
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
443 \subsubsection{Introduction}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
444
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
445 SQLite natively supports the following types: NULL, INTEGER, REAL, TEXT, BLOB.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
446
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
447 The following Python types can thus be sent to SQLite without any problem:
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
448
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
449 \begin{tableii} {c|l}{code}{Python type}{SQLite type}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
450 \lineii{None}{NULL}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
451 \lineii{int}{INTEGER}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
452 \lineii{long}{INTEGER}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
453 \lineii{float}{REAL}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
454 \lineii{str (UTF8-encoded)}{TEXT}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
455 \lineii{unicode}{TEXT}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
456 \lineii{buffer}{BLOB}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
457 \end{tableii}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
458
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
459 This is how SQLite types are converted to Python types by default:
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
460
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
461 \begin{tableii} {c|l}{code}{SQLite type}{Python type}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
462 \lineii{NULL}{None}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
463 \lineii{INTEGER}{int or long, depending on size}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
464 \lineii{REAL}{float}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
465 \lineii{TEXT}{depends on text_factory, unicode by default}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
466 \lineii{BLOB}{buffer}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
467 \end{tableii}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
468
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
469 The type system of the \module{sqlite3} module is extensible in two ways: you can store
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
470 additional Python types in a SQLite database via object adaptation, and you can
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
471 let the \module{sqlite3} module convert SQLite types to different Python types via
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
472 converters.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
473
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
474 \subsubsection{Using adapters to store additional Python types in SQLite databases}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
475
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
476 As described before, SQLite supports only a limited set of types natively. To
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
477 use other Python types with SQLite, you must \strong{adapt} them to one of the sqlite3
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
478 module's supported types for SQLite: one of NoneType, int, long, float,
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
479 str, unicode, buffer.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
480
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
481 The \module{sqlite3} module uses Python object adaptation, as described in \pep{246} for this. The protocol to use is \class{PrepareProtocol}.
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
482
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
483 There are two ways to enable the \module{sqlite3} module to adapt a custom Python type
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
484 to one of the supported ones.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
485
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
486 \paragraph{Letting your object adapt itself}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
487
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
488 This is a good approach if you write the class yourself. Let's suppose you have
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
489 a class like this:
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
490
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
491 \begin{verbatim}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
492 class Point(object):
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
493 def __init__(self, x, y):
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
494 self.x, self.y = x, y
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
495 \end{verbatim}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
496
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
497 Now you want to store the point in a single SQLite column. First you'll have to
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
498 choose one of the supported types first to be used for representing the point.
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
499 Let's just use str and separate the coordinates using a semicolon. Then you
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
500 need to give your class a method \code{__conform__(self, protocol)} which must
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
501 return the converted value. The parameter \var{protocol} will be
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
502 \class{PrepareProtocol}.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
503
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
504 \verbatiminput{sqlite3/adapter_point_1.py}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
505
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
506 \paragraph{Registering an adapter callable}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
507
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
508 The other possibility is to create a function that converts the type to the
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
509 string representation and register the function with \method{register_adapter}.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
510
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
511 \begin{notice}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
512 The type/class to adapt must be a new-style class, i. e. it must have
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
513 \class{object} as one of its bases.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
514 \end{notice}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
515
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
516 \verbatiminput{sqlite3/adapter_point_2.py}
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
517
39296
388b7d90bb89 lots of markup nits, most commonly Unix/unix --> \UNIX
Fred Drake <fdrake@acm.org>
parents: 38810
diff changeset
518 The \module{sqlite3} module has two default adapters for Python's built-in
388b7d90bb89 lots of markup nits, most commonly Unix/unix --> \UNIX
Fred Drake <fdrake@acm.org>
parents: 38810
diff changeset
519 \class{datetime.date} and \class{datetime.datetime} types. Now let's suppose
388b7d90bb89 lots of markup nits, most commonly Unix/unix --> \UNIX
Fred Drake <fdrake@acm.org>
parents: 38810
diff changeset
520 we want to store \class{datetime.datetime} objects not in ISO representation,
388b7d90bb89 lots of markup nits, most commonly Unix/unix --> \UNIX
Fred Drake <fdrake@acm.org>
parents: 38810
diff changeset
521 but as a \UNIX{} timestamp.
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
522
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
523 \verbatiminput{sqlite3/adapter_datetime.py}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
524
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
525 \subsubsection{Converting SQLite values to custom Python types}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
526
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
527 Writing an adapter lets you send custom Python types to SQLite.
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
528 But to make it really useful we need to make the Python to SQLite to Python
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
529 roundtrip work.
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
530
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
531 Enter converters.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
532
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
533 Let's go back to the \class{Point} class. We stored the x and y
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
534 coordinates separated via semicolons as strings in SQLite.
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
535
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
536 First, we'll define a converter function that accepts the string as a
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
537 parameter and constructs a \class{Point} object from it.
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
538
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
539 \begin{notice}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
540 Converter functions \strong{always} get called with a string, no matter
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
541 under which data type you sent the value to SQLite.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
542 \end{notice}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
543
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
544 \begin{notice}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
545 Converter names are looked up in a case-sensitive manner.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
546 \end{notice}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
547
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
548
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
549 \begin{verbatim}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
550 def convert_point(s):
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
551 x, y = map(float, s.split(";"))
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
552 return Point(x, y)
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
553 \end{verbatim}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
554
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
555 Now you need to make the \module{sqlite3} module know that what you select from the
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
556 database is actually a point. There are two ways of doing this:
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
557
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
558 \begin{itemize}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
559 \item Implicitly via the declared type
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
560 \item Explicitly via the column name
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
561 \end{itemize}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
562
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
563 Both ways are described in ``Module Constants'', section~\ref{sqlite3-Module-Contents}, in
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
564 the entries for the constants \constant{PARSE_DECLTYPES} and
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
565 \constant{PARSE_COLNAMES}.
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
566
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
567
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
568 The following example illustrates both approaches.
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
569
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
570 \verbatiminput{sqlite3/converter_point.py}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
571
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
572 \subsubsection{Default adapters and converters}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
573
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
574 There are default adapters for the date and datetime types in the datetime
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
575 module. They will be sent as ISO dates/ISO timestamps to SQLite.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
576
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
577 The default converters are registered under the name "date" for \class{datetime.date}
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
578 and under the name "timestamp" for \class{datetime.datetime}.
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
579
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
580 This way, you can use date/timestamps from Python without any additional
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
581 fiddling in most cases. The format of the adapters is also compatible with the
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
582 experimental SQLite date/time functions.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
583
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
584 The following example demonstrates this.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
585
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
586 \verbatiminput{sqlite3/pysqlite_datetime.py}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
587
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
588 \subsection{Controlling Transactions \label{sqlite3-Controlling-Transactions}}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
589
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
590 By default, the \module{sqlite3} module opens transactions implicitly before a Data Modification Language (DML)
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
591 statement (i.e. INSERT/UPDATE/DELETE/REPLACE), and commits transactions implicitly
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
592 before a non-DML, non-query statement (i. e. anything other than
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
593 SELECT/INSERT/UPDATE/DELETE/REPLACE).
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
594
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
595 So if you are within a transaction and issue a command like \code{CREATE TABLE
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
596 ...}, \code{VACUUM}, \code{PRAGMA}, the \module{sqlite3} module will commit implicitly
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
597 before executing that command. There are two reasons for doing that. The first
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
598 is that some of these commands don't work within transactions. The other reason
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
599 is that pysqlite needs to keep track of the transaction state (if a transaction
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
600 is active or not).
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
601
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
602 You can control which kind of "BEGIN" statements pysqlite implicitly executes
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
603 (or none at all) via the \var{isolation_level} parameter to the
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
604 \function{connect} call, or via the \member{isolation_level} property of
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
605 connections.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
606
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
607 If you want \strong{autocommit mode}, then set \member{isolation_level} to None.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
608
38660
f28f9c15e2d0 Typo fix
Andrew M. Kuchling <amk@amk.ca>
parents: 38642
diff changeset
609 Otherwise leave it at its default, which will result in a plain "BEGIN"
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
610 statement, or set it to one of SQLite's supported isolation levels: DEFERRED,
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
611 IMMEDIATE or EXCLUSIVE.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
612
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
613 As the \module{sqlite3} module needs to keep track of the transaction state, you should
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
614 not use \code{OR ROLLBACK} or \code{ON CONFLICT ROLLBACK} in your SQL. Instead,
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
615 catch the \exception{IntegrityError} and call the \method{rollback} method of
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
616 the connection yourself.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
617
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
618 \subsection{Using pysqlite efficiently}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
619
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
620 \subsubsection{Using shortcut methods}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
621
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
622 Using the nonstandard \method{execute}, \method{executemany} and
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
623 \method{executescript} methods of the \class{Connection} object, your code can
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
624 be written more concisely because you don't have to create the (often
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
625 superfluous) \class{Cursor} objects explicitly. Instead, the \class{Cursor}
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
626 objects are created implicitly and these shortcut methods return the cursor
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
627 objects. This way, you can execute a SELECT statement and iterate
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
628 over it directly using only a single call on the \class{Connection} object.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
629
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
630 \verbatiminput{sqlite3/shortcut_methods.py}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
631
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
632 \subsubsection{Accessing columns by name instead of by index}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
633
39839
07a44bff967f Backport rev 51866-51868 from trunk (sqlite3 documentation fixes).
Georg Brandl <georg@python.org>
parents: 39815
diff changeset
634 One useful feature of the \module{sqlite3} module is the builtin \class{sqlite3.Row} class
38169
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
635 designed to be used as a row factory.
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
636
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
637 Rows wrapped with this class can be accessed both by index (like tuples) and
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
638 case-insensitively by name:
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
639
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
640 \verbatiminput{sqlite3/rowclass.py}
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
641
85c828878188 Integrated the rest of the pysqlite reference manual into the Python
Gerhard Häring <gh@ghaering.de>
parents: 38069
diff changeset
642