summaryrefslogtreecommitdiffstats
path: root/Doc/includes
diff options
context:
space:
mode:
authorErlend E. Aasland <erlend.aasland@protonmail.com>2022-08-31 08:10:55 (GMT)
committerGitHub <noreply@github.com>2022-08-31 08:10:55 (GMT)
commit2ecc195498f3b1256fabc2b66e0d8f6d671fa1d7 (patch)
tree7f31823dd2fb5eeb5543b2f5c772091cdf92d8ff /Doc/includes
parenta0d0a77c1f78fee581294283a66bf198d69f2699 (diff)
downloadcpython-2ecc195498f3b1256fabc2b66e0d8f6d671fa1d7.zip
cpython-2ecc195498f3b1256fabc2b66e0d8f6d671fa1d7.tar.gz
cpython-2ecc195498f3b1256fabc2b66e0d8f6d671fa1d7.tar.bz2
[3.10] gh-96414: Inline code examples in sqlite3 docs (GH-96442). (#96453)
* [3.10] gh-96414: Inline code examples in sqlite3 docs (GH-96442). (cherry picked from commit f7e7bf161aaec5a5cffdcec7c97e1f09e445421b) Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
Diffstat (limited to 'Doc/includes')
-rw-r--r--Doc/includes/sqlite3/adapter_point_1.py18
-rw-r--r--Doc/includes/sqlite3/adapter_point_2.py19
-rw-r--r--Doc/includes/sqlite3/collation_reverse.py20
-rw-r--r--Doc/includes/sqlite3/converter_point.py40
-rw-r--r--Doc/includes/sqlite3/ctx_manager.py20
-rw-r--r--Doc/includes/sqlite3/execute_1.py22
-rw-r--r--Doc/includes/sqlite3/load_extension.py28
-rw-r--r--Doc/includes/sqlite3/md5func.py13
-rw-r--r--Doc/includes/sqlite3/mysumaggr.py22
-rw-r--r--Doc/includes/sqlite3/row_factory.py15
-rw-r--r--Doc/includes/sqlite3/shortcut_methods.py24
-rw-r--r--Doc/includes/sqlite3/text_factory.py29
12 files changed, 0 insertions, 270 deletions
diff --git a/Doc/includes/sqlite3/adapter_point_1.py b/Doc/includes/sqlite3/adapter_point_1.py
deleted file mode 100644
index 77daf8f..0000000
--- a/Doc/includes/sqlite3/adapter_point_1.py
+++ /dev/null
@@ -1,18 +0,0 @@
-import sqlite3
-
-class Point:
- def __init__(self, x, y):
- self.x, self.y = x, y
-
- def __conform__(self, protocol):
- if protocol is sqlite3.PrepareProtocol:
- return "%f;%f" % (self.x, self.y)
-
-con = sqlite3.connect(":memory:")
-cur = con.cursor()
-
-p = Point(4.0, -3.2)
-cur.execute("select ?", (p,))
-print(cur.fetchone()[0])
-
-con.close()
diff --git a/Doc/includes/sqlite3/adapter_point_2.py b/Doc/includes/sqlite3/adapter_point_2.py
deleted file mode 100644
index cb86331..0000000
--- a/Doc/includes/sqlite3/adapter_point_2.py
+++ /dev/null
@@ -1,19 +0,0 @@
-import sqlite3
-
-class Point:
- def __init__(self, x, y):
- self.x, self.y = x, y
-
-def adapt_point(point):
- return "%f;%f" % (point.x, point.y)
-
-sqlite3.register_adapter(Point, adapt_point)
-
-con = sqlite3.connect(":memory:")
-cur = con.cursor()
-
-p = Point(4.0, -3.2)
-cur.execute("select ?", (p,))
-print(cur.fetchone()[0])
-
-con.close()
diff --git a/Doc/includes/sqlite3/collation_reverse.py b/Doc/includes/sqlite3/collation_reverse.py
deleted file mode 100644
index 3504a35..0000000
--- a/Doc/includes/sqlite3/collation_reverse.py
+++ /dev/null
@@ -1,20 +0,0 @@
-import sqlite3
-
-def collate_reverse(string1, string2):
- if string1 == string2:
- return 0
- elif string1 < string2:
- return 1
- else:
- return -1
-
-con = sqlite3.connect(":memory:")
-con.create_collation("reverse", collate_reverse)
-
-cur = con.cursor()
-cur.execute("create table test(x)")
-cur.executemany("insert into test(x) values (?)", [("a",), ("b",)])
-cur.execute("select x from test order by x collate reverse")
-for row in cur:
- print(row)
-con.close()
diff --git a/Doc/includes/sqlite3/converter_point.py b/Doc/includes/sqlite3/converter_point.py
deleted file mode 100644
index 147807a..0000000
--- a/Doc/includes/sqlite3/converter_point.py
+++ /dev/null
@@ -1,40 +0,0 @@
-import sqlite3
-
-class Point:
- def __init__(self, x, y):
- self.x, self.y = x, y
-
- def __repr__(self):
- return f"Point({self.x}, {self.y})"
-
-def adapt_point(point):
- return f"{point.x};{point.y}".encode("utf-8")
-
-def convert_point(s):
- x, y = list(map(float, s.split(b";")))
- return Point(x, y)
-
-# Register the adapter and converter
-sqlite3.register_adapter(Point, adapt_point)
-sqlite3.register_converter("point", convert_point)
-
-# 1) Parse using declared types
-p = Point(4.0, -3.2)
-con = sqlite3.connect(":memory:", detect_types=sqlite3.PARSE_DECLTYPES)
-cur = con.execute("create table test(p point)")
-
-cur.execute("insert into test(p) values (?)", (p,))
-cur.execute("select p from test")
-print("with declared types:", cur.fetchone()[0])
-cur.close()
-con.close()
-
-# 2) Parse using column names
-con = sqlite3.connect(":memory:", detect_types=sqlite3.PARSE_COLNAMES)
-cur = con.execute("create table test(p)")
-
-cur.execute("insert into test(p) values (?)", (p,))
-cur.execute('select p as "p [point]" from test')
-print("with column names:", cur.fetchone()[0])
-cur.close()
-con.close()
diff --git a/Doc/includes/sqlite3/ctx_manager.py b/Doc/includes/sqlite3/ctx_manager.py
deleted file mode 100644
index 2e1175e..0000000
--- a/Doc/includes/sqlite3/ctx_manager.py
+++ /dev/null
@@ -1,20 +0,0 @@
-import sqlite3
-
-con = sqlite3.connect(":memory:")
-con.execute("create table lang (id integer primary key, name varchar unique)")
-
-# Successful, con.commit() is called automatically afterwards
-with con:
- con.execute("insert into lang(name) values (?)", ("Python",))
-
-# con.rollback() is called after the with block finishes with an exception, the
-# exception is still raised and must be caught
-try:
- with con:
- con.execute("insert into lang(name) values (?)", ("Python",))
-except sqlite3.IntegrityError:
- print("couldn't add Python twice")
-
-# Connection object used as context manager only commits or rollbacks transactions,
-# so the connection object should be closed manually
-con.close()
diff --git a/Doc/includes/sqlite3/execute_1.py b/Doc/includes/sqlite3/execute_1.py
deleted file mode 100644
index ee0000e..0000000
--- a/Doc/includes/sqlite3/execute_1.py
+++ /dev/null
@@ -1,22 +0,0 @@
-import sqlite3
-
-con = sqlite3.connect(":memory:")
-cur = con.cursor()
-cur.execute("create table lang (name, first_appeared)")
-
-# This is the qmark style:
-cur.execute("insert into lang values (?, ?)", ("C", 1972))
-
-# The qmark style used with executemany():
-lang_list = [
- ("Fortran", 1957),
- ("Python", 1991),
- ("Go", 2009),
-]
-cur.executemany("insert into lang values (?, ?)", lang_list)
-
-# And this is the named style:
-cur.execute("select * from lang where first_appeared=:year", {"year": 1972})
-print(cur.fetchall())
-
-con.close()
diff --git a/Doc/includes/sqlite3/load_extension.py b/Doc/includes/sqlite3/load_extension.py
deleted file mode 100644
index 624cfe2..0000000
--- a/Doc/includes/sqlite3/load_extension.py
+++ /dev/null
@@ -1,28 +0,0 @@
-import sqlite3
-
-con = sqlite3.connect(":memory:")
-
-# enable extension loading
-con.enable_load_extension(True)
-
-# Load the fulltext search extension
-con.execute("select load_extension('./fts3.so')")
-
-# alternatively you can load the extension using an API call:
-# con.load_extension("./fts3.so")
-
-# disable extension loading again
-con.enable_load_extension(False)
-
-# example from SQLite wiki
-con.execute("create virtual table recipe using fts3(name, ingredients)")
-con.executescript("""
- insert into recipe (name, ingredients) values ('broccoli stew', 'broccoli peppers cheese tomatoes');
- insert into recipe (name, ingredients) values ('pumpkin stew', 'pumpkin onions garlic celery');
- insert into recipe (name, ingredients) values ('broccoli pie', 'broccoli cheese onions flour');
- insert into recipe (name, ingredients) values ('pumpkin pie', 'pumpkin sugar flour butter');
- """)
-for row in con.execute("select rowid, name, ingredients from recipe where name match 'pie'"):
- print(row)
-
-con.close()
diff --git a/Doc/includes/sqlite3/md5func.py b/Doc/includes/sqlite3/md5func.py
deleted file mode 100644
index 16dc348..0000000
--- a/Doc/includes/sqlite3/md5func.py
+++ /dev/null
@@ -1,13 +0,0 @@
-import sqlite3
-import hashlib
-
-def md5sum(t):
- return hashlib.md5(t).hexdigest()
-
-con = sqlite3.connect(":memory:")
-con.create_function("md5", 1, md5sum)
-cur = con.cursor()
-cur.execute("select md5(?)", (b"foo",))
-print(cur.fetchone()[0])
-
-con.close()
diff --git a/Doc/includes/sqlite3/mysumaggr.py b/Doc/includes/sqlite3/mysumaggr.py
deleted file mode 100644
index 11f9639..0000000
--- a/Doc/includes/sqlite3/mysumaggr.py
+++ /dev/null
@@ -1,22 +0,0 @@
-import sqlite3
-
-class MySum:
- def __init__(self):
- self.count = 0
-
- def step(self, value):
- self.count += value
-
- def finalize(self):
- return self.count
-
-con = sqlite3.connect(":memory:")
-con.create_aggregate("mysum", 1, MySum)
-cur = con.cursor()
-cur.execute("create table test(i)")
-cur.execute("insert into test(i) values (1)")
-cur.execute("insert into test(i) values (2)")
-cur.execute("select mysum(i) from test")
-print(cur.fetchone()[0])
-
-con.close()
diff --git a/Doc/includes/sqlite3/row_factory.py b/Doc/includes/sqlite3/row_factory.py
deleted file mode 100644
index 9de6e7b..0000000
--- a/Doc/includes/sqlite3/row_factory.py
+++ /dev/null
@@ -1,15 +0,0 @@
-import sqlite3
-
-def dict_factory(cursor, row):
- d = {}
- for idx, col in enumerate(cursor.description):
- d[col[0]] = row[idx]
- return d
-
-con = sqlite3.connect(":memory:")
-con.row_factory = dict_factory
-cur = con.cursor()
-cur.execute("select 1 as a")
-print(cur.fetchone()["a"])
-
-con.close()
diff --git a/Doc/includes/sqlite3/shortcut_methods.py b/Doc/includes/sqlite3/shortcut_methods.py
deleted file mode 100644
index 48ea6fa..0000000
--- a/Doc/includes/sqlite3/shortcut_methods.py
+++ /dev/null
@@ -1,24 +0,0 @@
-import sqlite3
-
-langs = [
- ("C++", 1985),
- ("Objective-C", 1984),
-]
-
-con = sqlite3.connect(":memory:")
-
-# Create the table
-con.execute("create table lang(name, first_appeared)")
-
-# Fill the table
-con.executemany("insert into lang(name, first_appeared) values (?, ?)", langs)
-
-# Print the table contents
-for row in con.execute("select name, first_appeared from lang"):
- print(row)
-
-print("I just deleted", con.execute("delete from lang").rowcount, "rows")
-
-# close is not a shortcut method and it's not called automatically,
-# so the connection object should be closed manually
-con.close()
diff --git a/Doc/includes/sqlite3/text_factory.py b/Doc/includes/sqlite3/text_factory.py
deleted file mode 100644
index c0d87cd..0000000
--- a/Doc/includes/sqlite3/text_factory.py
+++ /dev/null
@@ -1,29 +0,0 @@
-import sqlite3
-
-con = sqlite3.connect(":memory:")
-cur = con.cursor()
-
-AUSTRIA = "Österreich"
-
-# by default, rows are returned as str
-cur.execute("select ?", (AUSTRIA,))
-row = cur.fetchone()
-assert row[0] == AUSTRIA
-
-# but we can make sqlite3 always return bytestrings ...
-con.text_factory = bytes
-cur.execute("select ?", (AUSTRIA,))
-row = cur.fetchone()
-assert type(row[0]) is bytes
-# the bytestrings will be encoded in UTF-8, unless you stored garbage in the
-# database ...
-assert row[0] == AUSTRIA.encode("utf-8")
-
-# we can also implement a custom text_factory ...
-# here we implement one that appends "foo" to all strings
-con.text_factory = lambda x: x.decode("utf-8") + "foo"
-cur.execute("select ?", ("bar",))
-row = cur.fetchone()
-assert row[0] == "barfoo"
-
-con.close()