mirror of https://github.com/python/cpython
bpo-44106: Improve sqlite3 example database contents (GH-26027)
This commit is contained in:
parent
9014437573
commit
92d1064727
|
@ -12,15 +12,15 @@ if os.path.exists(DB_FILE):
|
||||||
con = sqlite3.connect(DB_FILE)
|
con = sqlite3.connect(DB_FILE)
|
||||||
cur = con.cursor()
|
cur = con.cursor()
|
||||||
cur.execute("""
|
cur.execute("""
|
||||||
create table people
|
create table lang
|
||||||
(
|
(
|
||||||
name_last varchar(20),
|
name varchar(20),
|
||||||
age integer
|
first_appeared integer
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
|
|
||||||
cur.execute("insert into people (name_last, age) values ('Yeltsin', 72)")
|
cur.execute("insert into lang (name, first_appeared) values ('Forth', 1970)")
|
||||||
cur.execute("insert into people (name_last, age) values ('Putin', 51)")
|
cur.execute("insert into lang (name, first_appeared) values ('Ada', 1980)")
|
||||||
|
|
||||||
con.commit()
|
con.commit()
|
||||||
|
|
||||||
|
|
|
@ -1,19 +1,19 @@
|
||||||
import sqlite3
|
import sqlite3
|
||||||
|
|
||||||
con = sqlite3.connect(":memory:")
|
con = sqlite3.connect(":memory:")
|
||||||
con.execute("create table person (id integer primary key, firstname varchar unique)")
|
con.execute("create table lang (id integer primary key, name varchar unique)")
|
||||||
|
|
||||||
# Successful, con.commit() is called automatically afterwards
|
# Successful, con.commit() is called automatically afterwards
|
||||||
with con:
|
with con:
|
||||||
con.execute("insert into person(firstname) values (?)", ("Joe",))
|
con.execute("insert into lang(name) values (?)", ("Python",))
|
||||||
|
|
||||||
# con.rollback() is called after the with block finishes with an exception, the
|
# con.rollback() is called after the with block finishes with an exception, the
|
||||||
# exception is still raised and must be caught
|
# exception is still raised and must be caught
|
||||||
try:
|
try:
|
||||||
with con:
|
with con:
|
||||||
con.execute("insert into person(firstname) values (?)", ("Joe",))
|
con.execute("insert into lang(name) values (?)", ("Python",))
|
||||||
except sqlite3.IntegrityError:
|
except sqlite3.IntegrityError:
|
||||||
print("couldn't add Joe twice")
|
print("couldn't add Python twice")
|
||||||
|
|
||||||
# Connection object used as context manager only commits or rollbacks transactions,
|
# Connection object used as context manager only commits or rollbacks transactions,
|
||||||
# so the connection object should be closed manually
|
# so the connection object should be closed manually
|
||||||
|
|
|
@ -3,17 +3,17 @@ import sqlite3
|
||||||
con = sqlite3.connect("mydb")
|
con = sqlite3.connect("mydb")
|
||||||
|
|
||||||
cur = con.cursor()
|
cur = con.cursor()
|
||||||
SELECT = "select name_last, age from people order by age, name_last"
|
SELECT = "select name, first_appeared from people order by first_appeared, name"
|
||||||
|
|
||||||
# 1. Iterate over the rows available from the cursor, unpacking the
|
# 1. Iterate over the rows available from the cursor, unpacking the
|
||||||
# resulting sequences to yield their elements (name_last, age):
|
# resulting sequences to yield their elements (name, first_appeared):
|
||||||
cur.execute(SELECT)
|
cur.execute(SELECT)
|
||||||
for (name_last, age) in cur:
|
for name, first_appeared in cur:
|
||||||
print('%s is %d years old.' % (name_last, age))
|
print(f"The {name} programming language appeared in {first_appeared}.")
|
||||||
|
|
||||||
# 2. Equivalently:
|
# 2. Equivalently:
|
||||||
cur.execute(SELECT)
|
cur.execute(SELECT)
|
||||||
for row in cur:
|
for row in cur:
|
||||||
print('%s is %d years old.' % (row[0], row[1]))
|
print(f"The {row[0]} programming language appeared in {row[1]}.")
|
||||||
|
|
||||||
con.close()
|
con.close()
|
||||||
|
|
|
@ -7,7 +7,7 @@ con = sqlite3.connect("mydb")
|
||||||
cur = con.cursor()
|
cur = con.cursor()
|
||||||
|
|
||||||
# Execute the SELECT statement:
|
# Execute the SELECT statement:
|
||||||
cur.execute("select * from people order by age")
|
cur.execute("select * from lang order by first_appeared")
|
||||||
|
|
||||||
# Retrieve all rows as a sequence and print that sequence:
|
# Retrieve all rows as a sequence and print that sequence:
|
||||||
print(cur.fetchall())
|
print(cur.fetchall())
|
||||||
|
|
|
@ -2,22 +2,21 @@ import sqlite3
|
||||||
|
|
||||||
con = sqlite3.connect(":memory:")
|
con = sqlite3.connect(":memory:")
|
||||||
cur = con.cursor()
|
cur = con.cursor()
|
||||||
cur.execute("create table lang (lang_name, lang_age)")
|
cur.execute("create table lang (name, first_appeared)")
|
||||||
|
|
||||||
# This is the qmark style:
|
# This is the qmark style:
|
||||||
cur.execute("insert into lang values (?, ?)", ("C", 49))
|
cur.execute("insert into lang values (?, ?)", ("C", 1972))
|
||||||
|
|
||||||
# The qmark style used with executemany():
|
# The qmark style used with executemany():
|
||||||
lang_list = [
|
lang_list = [
|
||||||
("Fortran", 64),
|
("Fortran", 1957),
|
||||||
("Python", 30),
|
("Python", 1991),
|
||||||
("Go", 11),
|
("Go", 2009),
|
||||||
]
|
]
|
||||||
cur.executemany("insert into lang values (?, ?)", lang_list)
|
cur.executemany("insert into lang values (?, ?)", lang_list)
|
||||||
|
|
||||||
# And this is the named style:
|
# And this is the named style:
|
||||||
cur.execute("select * from lang where lang_name=:name and lang_age=:age",
|
cur.execute("select * from lang where first_appeared=:year", {"year": 1972})
|
||||||
{"name": "C", "age": 49})
|
|
||||||
print(cur.fetchall())
|
print(cur.fetchall())
|
||||||
|
|
||||||
con.close()
|
con.close()
|
||||||
|
|
|
@ -4,13 +4,13 @@ con = sqlite3.connect("mydb")
|
||||||
|
|
||||||
cur = con.cursor()
|
cur = con.cursor()
|
||||||
|
|
||||||
newPeople = (
|
languages = (
|
||||||
('Lebed' , 53),
|
("Smalltalk", 1972),
|
||||||
('Zhirinovsky' , 57),
|
("Swift", 2014),
|
||||||
)
|
)
|
||||||
|
|
||||||
for person in newPeople:
|
for lang in languages:
|
||||||
cur.execute("insert into people (name_last, age) values (?, ?)", person)
|
cur.execute("insert into lang (name, first_appeared) values (?, ?)", lang)
|
||||||
|
|
||||||
# The changes will not be saved unless the transaction is committed explicitly:
|
# The changes will not be saved unless the transaction is committed explicitly:
|
||||||
con.commit()
|
con.commit()
|
|
@ -1,23 +1,23 @@
|
||||||
import sqlite3
|
import sqlite3
|
||||||
|
|
||||||
persons = [
|
langs = [
|
||||||
("Hugo", "Boss"),
|
("C++", 1985),
|
||||||
("Calvin", "Klein")
|
("Objective-C", 1984),
|
||||||
]
|
]
|
||||||
|
|
||||||
con = sqlite3.connect(":memory:")
|
con = sqlite3.connect(":memory:")
|
||||||
|
|
||||||
# Create the table
|
# Create the table
|
||||||
con.execute("create table person(firstname, lastname)")
|
con.execute("create table lang(name, first_appeared)")
|
||||||
|
|
||||||
# Fill the table
|
# Fill the table
|
||||||
con.executemany("insert into person(firstname, lastname) values (?, ?)", persons)
|
con.executemany("insert into lang(name, first_appeared) values (?, ?)", langs)
|
||||||
|
|
||||||
# Print the table contents
|
# Print the table contents
|
||||||
for row in con.execute("select firstname, lastname from person"):
|
for row in con.execute("select name, first_appeared from lang"):
|
||||||
print(row)
|
print(row)
|
||||||
|
|
||||||
print("I just deleted", con.execute("delete from person").rowcount, "rows")
|
print("I just deleted", con.execute("delete from lang").rowcount, "rows")
|
||||||
|
|
||||||
# close is not a shortcut method and it's not called automatically,
|
# close is not a shortcut method and it's not called automatically,
|
||||||
# so the connection object should be closed manually
|
# so the connection object should be closed manually
|
||||||
|
|
|
@ -1,13 +1,10 @@
|
||||||
import sqlite3
|
import sqlite3
|
||||||
|
|
||||||
FIELD_MAX_WIDTH = 20
|
FIELD_MAX_WIDTH = 20
|
||||||
TABLE_NAME = 'people'
|
|
||||||
SELECT = 'select * from %s order by age, name_last' % TABLE_NAME
|
|
||||||
|
|
||||||
con = sqlite3.connect("mydb")
|
con = sqlite3.connect("mydb")
|
||||||
|
|
||||||
cur = con.cursor()
|
cur = con.cursor()
|
||||||
cur.execute(SELECT)
|
cur.execute("select * from lang order by name, first_appeared")
|
||||||
|
|
||||||
# Print a header.
|
# Print a header.
|
||||||
for fieldDesc in cur.description:
|
for fieldDesc in cur.description:
|
||||||
|
|
|
@ -209,8 +209,7 @@ library/smtplib,,:port,method must support that as well as a regular host:port
|
||||||
library/socket,,::,'5aef:2b::8'
|
library/socket,,::,'5aef:2b::8'
|
||||||
library/socket,,:can,"return (can_id, can_dlc, data[:can_dlc])"
|
library/socket,,:can,"return (can_id, can_dlc, data[:can_dlc])"
|
||||||
library/socket,,:len,fds.frombytes(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
|
library/socket,,:len,fds.frombytes(cmsg_data[:len(cmsg_data) - (len(cmsg_data) % fds.itemsize)])
|
||||||
library/sqlite3,,:name,"cur.execute(""select * from lang where lang_name=:name and lang_age=:age"","
|
library/sqlite3,,:year,"cur.execute(""select * from lang where first_appeared=:year"", {""year"": 1972})"
|
||||||
library/sqlite3,,:age,"cur.execute(""select * from lang where lang_name=:name and lang_age=:age"","
|
|
||||||
library/sqlite3,,:memory,
|
library/sqlite3,,:memory,
|
||||||
library/sqlite3,,:path,"db = sqlite3.connect('file:path/to/database?mode=ro', uri=True)"
|
library/sqlite3,,:path,"db = sqlite3.connect('file:path/to/database?mode=ro', uri=True)"
|
||||||
library/ssl,,:My,"Organizational Unit Name (eg, section) []:My Group"
|
library/ssl,,:My,"Organizational Unit Name (eg, section) []:My Group"
|
||||||
|
|
|
Loading…
Reference in New Issue