annotate Doc/includes/sqlite3/text_factory.py @ 87690:66c1c9f32567 default tip

Add use_weakref option to functools.lru_cache The use_weakref option makes lru_cache create weak references to the function arguments when creating the cache key, which prevents them from staying in the memory forever even after all other references to them are gone. This is a proof of concept for http://bugs.python.org/issue19859
author Radomir Dopieralski <devel@sheep.art.pl>
date Tue, 03 Dec 2013 16:02:48 +0100
parents ba5b337ecc27
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
42604
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
1 import sqlite3
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
2
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
3 con = sqlite3.connect(":memory:")
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
4 cur = con.cursor()
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
5
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
6 AUSTRIA = "\xd6sterreich"
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
7
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
8 # by default, rows are returned as Unicode
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
9 cur.execute("select ?", (AUSTRIA,))
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
10 row = cur.fetchone()
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
11 assert row[0] == AUSTRIA
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
12
54339
699da6c467dc Merged revisions 72661,72675-72677,72679,72712,72801,72820 via svnmerge from
Georg Brandl <georg@python.org>
parents: 42604
diff changeset
13 # but we can make sqlite3 always return bytestrings ...
74959
9eb77d455be1 Issue #13491: Fix many errors in sqlite3 documentation
Petri Lehtinen <petri@digip.org>
parents: 55580
diff changeset
14 con.text_factory = bytes
42604
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
15 cur.execute("select ?", (AUSTRIA,))
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
16 row = cur.fetchone()
74959
9eb77d455be1 Issue #13491: Fix many errors in sqlite3 documentation
Petri Lehtinen <petri@digip.org>
parents: 55580
diff changeset
17 assert type(row[0]) is bytes
42604
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
18 # the bytestrings will be encoded in UTF-8, unless you stored garbage in the
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
19 # database ...
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
20 assert row[0] == AUSTRIA.encode("utf-8")
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
21
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
22 # we can also implement a custom text_factory ...
74959
9eb77d455be1 Issue #13491: Fix many errors in sqlite3 documentation
Petri Lehtinen <petri@digip.org>
parents: 55580
diff changeset
23 # here we implement one that appends "foo" to all strings
9eb77d455be1 Issue #13491: Fix many errors in sqlite3 documentation
Petri Lehtinen <petri@digip.org>
parents: 55580
diff changeset
24 con.text_factory = lambda x: x.decode("utf-8") + "foo"
9eb77d455be1 Issue #13491: Fix many errors in sqlite3 documentation
Petri Lehtinen <petri@digip.org>
parents: 55580
diff changeset
25 cur.execute("select ?", ("bar",))
42604
9e1529bf0442 Move the 3k reST doc tree in place.
Georg Brandl <georg@python.org>
parents:
diff changeset
26 row = cur.fetchone()
74959
9eb77d455be1 Issue #13491: Fix many errors in sqlite3 documentation
Petri Lehtinen <petri@digip.org>
parents: 55580
diff changeset
27 assert row[0] == "barfoo"