diff options
-rw-r--r-- | Doc/lib/sqlite3/adapter_point_1.py | 1 | ||||
-rw-r--r-- | Doc/lib/sqlite3/adapter_point_2.py | 1 | ||||
-rw-r--r-- | Doc/lib/sqlite3/execute_2.py | 1 | ||||
-rw-r--r-- | Doc/lib/sqlite3/execute_3.py | 2 | ||||
-rw-r--r-- | Doc/lib/sqlite3/insert_more_people.py | 1 | ||||
-rw-r--r-- | Doc/lib/sqlite3/shortcut_methods.py | 43 | ||||
-rw-r--r-- | Doc/lib/sqlite3/text_factory.py | 85 | ||||
-rw-r--r-- | Lib/test/test_unicode.py | 2 |
8 files changed, 64 insertions, 72 deletions
diff --git a/Doc/lib/sqlite3/adapter_point_1.py b/Doc/lib/sqlite3/adapter_point_1.py index 7b0c51e..b4856d5 100644 --- a/Doc/lib/sqlite3/adapter_point_1.py +++ b/Doc/lib/sqlite3/adapter_point_1.py @@ -14,4 +14,3 @@ cur = con.cursor() p = Point(4.0, -3.2)
cur.execute("select ?", (p,))
print cur.fetchone()[0]
-
diff --git a/Doc/lib/sqlite3/adapter_point_2.py b/Doc/lib/sqlite3/adapter_point_2.py index 3b4ab10..50e3692 100644 --- a/Doc/lib/sqlite3/adapter_point_2.py +++ b/Doc/lib/sqlite3/adapter_point_2.py @@ -15,4 +15,3 @@ cur = con.cursor() p = Point(4.0, -3.2)
cur.execute("select ?", (p,))
print cur.fetchone()[0]
-
diff --git a/Doc/lib/sqlite3/execute_2.py b/Doc/lib/sqlite3/execute_2.py index 28318cc..b4333d8 100644 --- a/Doc/lib/sqlite3/execute_2.py +++ b/Doc/lib/sqlite3/execute_2.py @@ -10,4 +10,3 @@ age = 72 cur.execute("select name_last, age from people where name_last=:who and age=:age",
{"who": who, "age": age})
print cur.fetchone()
-
diff --git a/Doc/lib/sqlite3/execute_3.py b/Doc/lib/sqlite3/execute_3.py index 2f02372e..9cd3deb 100644 --- a/Doc/lib/sqlite3/execute_3.py +++ b/Doc/lib/sqlite3/execute_3.py @@ -10,5 +10,3 @@ age = 72 cur.execute("select name_last, age from people where name_last=:who and age=:age",
locals())
print cur.fetchone()
-
-
diff --git a/Doc/lib/sqlite3/insert_more_people.py b/Doc/lib/sqlite3/insert_more_people.py index 7daa88b..430d942 100644 --- a/Doc/lib/sqlite3/insert_more_people.py +++ b/Doc/lib/sqlite3/insert_more_people.py @@ -14,4 +14,3 @@ for person in newPeople: # The changes will not be saved unless the transaction is committed explicitly:
con.commit()
-
diff --git a/Doc/lib/sqlite3/shortcut_methods.py b/Doc/lib/sqlite3/shortcut_methods.py index 93c9547..12ce0c0 100644 --- a/Doc/lib/sqlite3/shortcut_methods.py +++ b/Doc/lib/sqlite3/shortcut_methods.py @@ -1,22 +1,21 @@ -import sqlite3 - -persons = [ - ("Hugo", "Boss"), - ("Calvin", "Klein") - ] - -con = sqlite3.connect(":memory:") - -# Create the table -con.execute("create table person(firstname, lastname)") - -# Fill the table -con.executemany("insert into person(firstname, lastname) values (?, ?)", persons) - -# Print the table contents -for row in con.execute("select firstname, lastname from person"): - print row - -# Using a dummy WHERE clause to not let SQLite take the shortcut table deletes. -print "I just deleted", con.execute("delete from person where 1=1").rowcount, "rows" - +import sqlite3
+
+persons = [
+ ("Hugo", "Boss"),
+ ("Calvin", "Klein")
+ ]
+
+con = sqlite3.connect(":memory:")
+
+# Create the table
+con.execute("create table person(firstname, lastname)")
+
+# Fill the table
+con.executemany("insert into person(firstname, lastname) values (?, ?)", persons)
+
+# Print the table contents
+for row in con.execute("select firstname, lastname from person"):
+ print row
+
+# Using a dummy WHERE clause to not let SQLite take the shortcut table deletes.
+print "I just deleted", con.execute("delete from person where 1=1").rowcount, "rows"
diff --git a/Doc/lib/sqlite3/text_factory.py b/Doc/lib/sqlite3/text_factory.py index cf2ae92..13c832d 100644 --- a/Doc/lib/sqlite3/text_factory.py +++ b/Doc/lib/sqlite3/text_factory.py @@ -1,43 +1,42 @@ -import sqlite3 - -con = sqlite3.connect(":memory:") -cur = con.cursor() - -# Create the table -con.execute("create table person(lastname, firstname)") - -AUSTRIA = u"\xd6sterreich" - -# by default, rows are returned as Unicode -cur.execute("select ?", (AUSTRIA,)) -row = cur.fetchone() -assert row[0] == AUSTRIA - -# but we can make pysqlite always return bytestrings ... -con.text_factory = str -cur.execute("select ?", (AUSTRIA,)) -row = cur.fetchone() -assert type(row[0]) == str -# 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 will ignore Unicode characters that cannot be -# decoded from UTF-8 -con.text_factory = lambda x: unicode(x, "utf-8", "ignore") -cur.execute("select ?", ("this is latin1 and would normally create errors" + u"\xe4\xf6\xfc".encode("latin1"),)) -row = cur.fetchone() -assert type(row[0]) == unicode - -# pysqlite offers a builtin optimized text_factory that will return bytestring -# objects, if the data is in ASCII only, and otherwise return unicode objects -con.text_factory = sqlite3.OptimizedUnicode -cur.execute("select ?", (AUSTRIA,)) -row = cur.fetchone() -assert type(row[0]) == unicode - -cur.execute("select ?", ("Germany",)) -row = cur.fetchone() -assert type(row[0]) == str - +import sqlite3
+
+con = sqlite3.connect(":memory:")
+cur = con.cursor()
+
+# Create the table
+con.execute("create table person(lastname, firstname)")
+
+AUSTRIA = u"\xd6sterreich"
+
+# by default, rows are returned as Unicode
+cur.execute("select ?", (AUSTRIA,))
+row = cur.fetchone()
+assert row[0] == AUSTRIA
+
+# but we can make pysqlite always return bytestrings ...
+con.text_factory = str
+cur.execute("select ?", (AUSTRIA,))
+row = cur.fetchone()
+assert type(row[0]) == str
+# 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 will ignore Unicode characters that cannot be
+# decoded from UTF-8
+con.text_factory = lambda x: unicode(x, "utf-8", "ignore")
+cur.execute("select ?", ("this is latin1 and would normally create errors" + u"\xe4\xf6\xfc".encode("latin1"),))
+row = cur.fetchone()
+assert type(row[0]) == unicode
+
+# pysqlite offers a builtin optimized text_factory that will return bytestring
+# objects, if the data is in ASCII only, and otherwise return unicode objects
+con.text_factory = sqlite3.OptimizedUnicode
+cur.execute("select ?", (AUSTRIA,))
+row = cur.fetchone()
+assert type(row[0]) == unicode
+
+cur.execute("select ?", ("Germany",))
+row = cur.fetchone()
+assert type(row[0]) == str
diff --git a/Lib/test/test_unicode.py b/Lib/test/test_unicode.py index 2858d1d..34f9371 100644 --- a/Lib/test/test_unicode.py +++ b/Lib/test/test_unicode.py @@ -410,7 +410,7 @@ class UnicodeTest( def __str__(self): return u'\u1234' self.assertEqual('%s' % Wrapper(), u'\u1234') - + @test_support.run_with_locale('LC_ALL', 'de_DE', 'fr_FR') def test_format_float(self): # should not format with a comma, but always with C locale |