With '%', non-ascii worked because the '%' automatically got promoted to
unicode. With format that doesn't happen, which led to encoding errors. This
fix goes back to using %, and adds a test to make sure non-ascii string values
work in iterdump.
Although there is not a regression in Python2, we make the same update here to
keep the code bases in sync.
(The fix for issue 9750 introduced a regression in Python 3 by sorting the row
objects returned by fetchall. But if a row_factory such as sqlite3.Row is
used, the rows may not be sortable (in Python3), which leads to an exception.
The sorting is still a nice idea, so the patch moves the sort into the sql.)
Fix and test by Peter Otten.
* Use try/except ImportError or test_support.import_module() to import thread
and threading modules
* Add @unittest.skipUnless(threading, ...) to testcases using threads
string. Initialize all attributes to be able to call the statement destructor
on error.
Avoid also a duplicate connection in some tests: setUp() does already open a
connection (":memory:").
characters. This avoids the common case of something like 'NUMBER(10)' not
being parsed as 'NUMBER', like expected. Also corrected the docs about
converter names being case-sensitive. They aren't any longer.
The problem is that when trying to do the second insert, sqlite seems to sleep
for a very long time. Here is the output from strace:
read(6, "SQLite format 3\0\4\0\1\1\0@ \0\0\0\1\0\0\0\0"..., 1024) = 1024
nanosleep({4294, 966296000}, <unfinished ...>
I don't know which version this was fixed in, but 3.2.1 definitely fails.