mirror of https://github.com/python/cpython.git
gh-95273: Move sqlite3 executemany examples from reference to tutorial (#95351)
This commit is contained in:
parent
e9c8de669d
commit
f0bf7956e6
|
@ -1,26 +0,0 @@
|
||||||
import sqlite3
|
|
||||||
|
|
||||||
class IterChars:
|
|
||||||
def __init__(self):
|
|
||||||
self.count = ord('a')
|
|
||||||
|
|
||||||
def __iter__(self):
|
|
||||||
return self
|
|
||||||
|
|
||||||
def __next__(self):
|
|
||||||
if self.count > ord('z'):
|
|
||||||
raise StopIteration
|
|
||||||
self.count += 1
|
|
||||||
return (chr(self.count - 1),) # this is a 1-tuple
|
|
||||||
|
|
||||||
con = sqlite3.connect(":memory:")
|
|
||||||
cur = con.cursor()
|
|
||||||
cur.execute("create table characters(c)")
|
|
||||||
|
|
||||||
theIter = IterChars()
|
|
||||||
cur.executemany("insert into characters(c) values (?)", theIter)
|
|
||||||
|
|
||||||
cur.execute("select c from characters")
|
|
||||||
print(cur.fetchall())
|
|
||||||
|
|
||||||
con.close()
|
|
|
@ -1,17 +0,0 @@
|
||||||
import sqlite3
|
|
||||||
import string
|
|
||||||
|
|
||||||
def char_generator():
|
|
||||||
for c in string.ascii_lowercase:
|
|
||||||
yield (c,)
|
|
||||||
|
|
||||||
con = sqlite3.connect(":memory:")
|
|
||||||
cur = con.cursor()
|
|
||||||
cur.execute("create table characters(c)")
|
|
||||||
|
|
||||||
cur.executemany("insert into characters(c) values (?)", char_generator())
|
|
||||||
|
|
||||||
cur.execute("select c from characters")
|
|
||||||
print(cur.fetchall())
|
|
||||||
|
|
||||||
con.close()
|
|
|
@ -67,15 +67,28 @@ after restarting the Python interpreter::
|
||||||
con = sqlite3.connect('example.db')
|
con = sqlite3.connect('example.db')
|
||||||
cur = con.cursor()
|
cur = con.cursor()
|
||||||
|
|
||||||
To retrieve data after executing a SELECT statement, either treat the cursor as
|
At this point, our database only contains one row::
|
||||||
an :term:`iterator`, call the cursor's :meth:`~Cursor.fetchone` method to
|
|
||||||
retrieve a single matching row, or call :meth:`~Cursor.fetchall` to get a list
|
|
||||||
of the matching rows.
|
|
||||||
|
|
||||||
This example uses the iterator form::
|
>>> res = cur.execute('SELECT count(rowid) FROM stocks')
|
||||||
|
>>> print(res.fetchone())
|
||||||
|
(1,)
|
||||||
|
|
||||||
|
The result is a one-item :class:`tuple`:
|
||||||
|
one row, with one column.
|
||||||
|
Now, let us insert three more rows of data,
|
||||||
|
using :meth:`~Cursor.executemany`::
|
||||||
|
|
||||||
|
>>> data = [
|
||||||
|
('2006-03-28', 'BUY', 'IBM', 1000, 45.0),
|
||||||
|
('2006-04-05', 'BUY', 'MSFT', 1000, 72.0),
|
||||||
|
('2006-04-06', 'SELL', 'IBM', 500, 53.0),
|
||||||
|
]
|
||||||
|
>>> cur.executemany('INSERT INTO stocks VALUES(?, ?, ?, ?)', data)
|
||||||
|
|
||||||
|
Then, retrieve the data by iterating over the result of a ``SELECT`` statement::
|
||||||
|
|
||||||
>>> for row in cur.execute('SELECT * FROM stocks ORDER BY price'):
|
>>> for row in cur.execute('SELECT * FROM stocks ORDER BY price'):
|
||||||
print(row)
|
... print(row)
|
||||||
|
|
||||||
('2006-01-05', 'BUY', 'RHAT', 100, 35.14)
|
('2006-01-05', 'BUY', 'RHAT', 100, 35.14)
|
||||||
('2006-03-28', 'BUY', 'IBM', 1000, 45.0)
|
('2006-03-28', 'BUY', 'IBM', 1000, 45.0)
|
||||||
|
@ -990,12 +1003,14 @@ Cursor Objects
|
||||||
:term:`iterator` yielding parameters instead of a sequence.
|
:term:`iterator` yielding parameters instead of a sequence.
|
||||||
Uses the same implicit transaction handling as :meth:`~Cursor.execute`.
|
Uses the same implicit transaction handling as :meth:`~Cursor.execute`.
|
||||||
|
|
||||||
.. literalinclude:: ../includes/sqlite3/executemany_1.py
|
Example::
|
||||||
|
|
||||||
Here's a shorter example using a :term:`generator`:
|
|
||||||
|
|
||||||
.. literalinclude:: ../includes/sqlite3/executemany_2.py
|
|
||||||
|
|
||||||
|
data = [
|
||||||
|
("row1",),
|
||||||
|
("row2",),
|
||||||
|
]
|
||||||
|
# cur is an sqlite3.Cursor object
|
||||||
|
cur.executemany("insert into t values(?)", data)
|
||||||
|
|
||||||
.. method:: executescript(sql_script, /)
|
.. method:: executescript(sql_script, /)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue