Unfortunately I don't have access to a blank database and I took the
chance and ran your tests on a non-empty database. Tests are mostly
good: 5/7 pass. You should know that I used current trunk and simply
commented out the line, which resets the supports_unicode_binds but it
should be equivalent in effect to your patch. Without the patch all
tests fail. Below is pretty verbose result for you.
I hope this helps,
Victor
./sqla_nose.py -v test.sql.test_types:UnicodeTest --dburi="mssql
+pyodbc://XXXX:xxx@xxx:2431/X?
driver=SQLServer&port=2431&TDS_Version=8.0" --log-
debug=sqlalchemy.orm.mapper --log-debug=sqlalchemy.pool --log-
debug=sqlalchemy.engine
DEBUG:sqlalchemy.pool.QueuePool:Created new connection
<pyodbc.Connection object at 0xa3fdfa0>
INFO:sqlalchemy.engine.base.Engine:SELECT user_name() as user_name;
INFO:sqlalchemy.engine.base.Engine:()
DEBUG:sqlalchemy.engine.base.Engine:Col ('user_name',)
DEBUG:sqlalchemy.engine.base.Engine:Row (u'SPEED_IT', )
INFO:sqlalchemy.engine.base.Engine:
SELECT default_schema_name FROM
sys.database_principals
WHERE name = ?
AND type = 'S'
INFO:sqlalchemy.engine.base.Engine:(u'SPEED_IT',)
DEBUG:sqlalchemy.engine.base.Engine:Col ('default_schema_name',)
DEBUG:sqlalchemy.engine.base.Engine:Row (u'dbo', )
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:SELECT [COLUMNS_1].[TABLE_SCHEMA],
[COLUMNS_1].[TABLE_NAME], [COLUMNS_1].[COLUMN_NAME], [COLUMNS_1].
[IS_NULLABLE], [COLUMNS_1].[DATA_TYPE], [COLUMNS_1].
[ORDINAL_POSITION], [COLUMNS_1].[CHARACTER_MAXIMUM_LENGTH],
[COLUMNS_1].[NUMERIC_PRECISION], [COLUMNS_1].[NUMERIC_SCALE],
[COLUMNS_1].[COLUMN_DEFAULT], [COLUMNS_1].[COLLATION_NAME]
FROM [INFORMATION_SCHEMA].[COLUMNS] AS [COLUMNS_1]
WHERE [COLUMNS_1].[TABLE_NAME] = ? AND [COLUMNS_1].[TABLE_SCHEMA] = ?
INFO:sqlalchemy.engine.base.Engine:(u'unicode_table', u'dbo')
DEBUG:sqlalchemy.engine.base.Engine:Col ('TABLE_SCHEMA', 'TABLE_NAME',
'COLUMN_NAME', 'IS_NULLABLE', 'DATA_TYPE', 'ORDINAL_POSITION',
'CHARACTER_MAXIMUM_LENGTH', 'NUMERIC_PRECISION', 'NUMERIC_SCALE',
'COLUMN_DEFAULT', 'COLLATION_NAME')
INFO:sqlalchemy.engine.base.Engine:
CREATE TABLE unicode_table (
id INTEGER NOT NULL IDENTITY(1,1),
unicode_varchar NVARCHAR(250) NULL,
unicode_text NTEXT NULL,
PRIMARY KEY (id)
)
INFO:sqlalchemy.engine.base.Engine:()
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
test.sql.test_types.UnicodeTest.test_blank_strings ...
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:INSERT INTO unicode_table
(unicode_varchar) OUTPUT
inserted.id VALUES (?)
INFO:sqlalchemy.engine.base.Engine:(u'',)
DEBUG:sqlalchemy.engine.base.Engine:Col ('id',)
DEBUG:sqlalchemy.engine.base.Engine:Row (1, )
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:SELECT
unicode_table.unicode_varchar
FROM unicode_table
INFO:sqlalchemy.engine.base.Engine:()
DEBUG:sqlalchemy.engine.base.Engine:Col ('unicode_varchar',)
DEBUG:sqlalchemy.engine.base.Engine:Row (u'', )
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:DELETE FROM unicode_table
INFO:sqlalchemy.engine.base.Engine:()
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
ok
test.sql.test_types.UnicodeTest.test_ignoring_unicode_error ...
DEBUG:sqlalchemy.pool.QueuePool:Created new connection
<pyodbc.Connection object at 0xa4490e0>
INFO:sqlalchemy.engine.base.Engine:SELECT user_name() as user_name;
INFO:sqlalchemy.engine.base.Engine:()
DEBUG:sqlalchemy.engine.base.Engine:Col ('user_name',)
DEBUG:sqlalchemy.engine.base.Engine:Row (u'SPEED_IT', )
INFO:sqlalchemy.engine.base.Engine:
SELECT default_schema_name FROM
sys.database_principals
WHERE name = ?
AND type = 'S'
INFO:sqlalchemy.engine.base.Engine:(u'SPEED_IT',)
DEBUG:sqlalchemy.engine.base.Engine:Col ('default_schema_name',)
DEBUG:sqlalchemy.engine.base.Engine:Row (u'dbo', )
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa4490e0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:SELECT [COLUMNS_1].[TABLE_SCHEMA],
[COLUMNS_1].[TABLE_NAME], [COLUMNS_1].[COLUMN_NAME], [COLUMNS_1].
[IS_NULLABLE], [COLUMNS_1].[DATA_TYPE], [COLUMNS_1].
[ORDINAL_POSITION], [COLUMNS_1].[CHARACTER_MAXIMUM_LENGTH],
[COLUMNS_1].[NUMERIC_PRECISION], [COLUMNS_1].[NUMERIC_SCALE],
[COLUMNS_1].[COLUMN_DEFAULT], [COLUMNS_1].[COLLATION_NAME]
FROM [INFORMATION_SCHEMA].[COLUMNS] AS [COLUMNS_1]
WHERE [COLUMNS_1].[TABLE_NAME] = ? AND [COLUMNS_1].[TABLE_SCHEMA] = ?
INFO:sqlalchemy.engine.base.Engine:(u'unicode_err_table', u'dbo')
DEBUG:sqlalchemy.engine.base.Engine:Col ('TABLE_SCHEMA', 'TABLE_NAME',
'COLUMN_NAME', 'IS_NULLABLE', 'DATA_TYPE', 'ORDINAL_POSITION',
'CHARACTER_MAXIMUM_LENGTH', 'NUMERIC_PRECISION', 'NUMERIC_SCALE',
'COLUMN_DEFAULT', 'COLLATION_NAME')
INFO:sqlalchemy.engine.base.Engine:
CREATE TABLE unicode_err_table (
sort INTEGER NULL,
plain_varchar_no_coding_error VARCHAR(248) NULL
)
INFO:sqlalchemy.engine.base.Engine:()
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa4490e0> being returned to pool
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa4490e0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:INSERT INTO unicode_err_table
(sort, plain_varchar_no_coding_error) VALUES (?, ?)
INFO:sqlalchemy.engine.base.Engine:(1, 'Alors vous imaginez ma
surprise, au lever du jour, quand une drle de petite voix ma rveill.
Elle disait: Sil vous plat dessine-moi un mouton! ')
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa4490e0> being returned to pool
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa4490e0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:SELECT unicode_err_table.sort,
unicode_err_table.plain_varchar_no_coding_error
FROM unicode_err_table
INFO:sqlalchemy.engine.base.Engine:()
DEBUG:sqlalchemy.engine.base.Engine:Col ('sort',
'plain_varchar_no_coding_error')
DEBUG:sqlalchemy.engine.base.Engine:Row (1, 'Alors vous imaginez ma
surprise, au lever du jour, quand une drle de petite voix ma rveill.
Elle disait: Sil vous plat dessine-moi un mouton! ')
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa4490e0> being returned to pool
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa4490e0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:INSERT INTO unicode_err_table
(sort, plain_varchar_no_coding_error) VALUES (?, ?)
INFO:sqlalchemy.engine.base.Engine:(2, u'Alors vous imaginez ma
surprise, au lever du jour, quand une dr\xf4le de petite voix m\u2019a
r\xe9veill\xe9. Elle disait: \xab S\u2019il vous pla\xeet\u2026
dessine-moi un mouton! \xbb')
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa4490e0> being returned to pool
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa4490e0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:SELECT unicode_err_table.sort,
unicode_err_table.plain_varchar_no_coding_error
FROM unicode_err_table ORDER BY unicode_err_table.sort
INFO:sqlalchemy.engine.base.Engine:()
DEBUG:sqlalchemy.engine.base.Engine:Col ('sort',
'plain_varchar_no_coding_error')
DEBUG:sqlalchemy.engine.base.Engine:Row (1, 'Alors vous imaginez ma
surprise, au lever du jour, quand une drle de petite voix ma rveill.
Elle disait: Sil vous plat dessine-moi un mouton! ')
DEBUG:sqlalchemy.engine.base.Engine:Row (2, 'Alors vous imaginez ma
surprise, au lever du jour, quand une dr\xf4le de petite voix m?a r
\xe9veill\xe9. Elle disait: \xab S?il vous pla\xeet? dessine-moi un
mouton! ')
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa4490e0> being returned to pool
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa4490e0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:SELECT [COLUMNS_1].[TABLE_SCHEMA],
[COLUMNS_1].[TABLE_NAME], [COLUMNS_1].[COLUMN_NAME], [COLUMNS_1].
[IS_NULLABLE], [COLUMNS_1].[DATA_TYPE], [COLUMNS_1].
[ORDINAL_POSITION], [COLUMNS_1].[CHARACTER_MAXIMUM_LENGTH],
[COLUMNS_1].[NUMERIC_PRECISION], [COLUMNS_1].[NUMERIC_SCALE],
[COLUMNS_1].[COLUMN_DEFAULT], [COLUMNS_1].[COLLATION_NAME]
FROM [INFORMATION_SCHEMA].[COLUMNS] AS [COLUMNS_1]
WHERE [COLUMNS_1].[TABLE_NAME] = ? AND [COLUMNS_1].[TABLE_SCHEMA] = ?
INFO:sqlalchemy.engine.base.Engine:(u'unicode_err_table', u'dbo')
DEBUG:sqlalchemy.engine.base.Engine:Col ('TABLE_SCHEMA', 'TABLE_NAME',
'COLUMN_NAME', 'IS_NULLABLE', 'DATA_TYPE', 'ORDINAL_POSITION',
'CHARACTER_MAXIMUM_LENGTH', 'NUMERIC_PRECISION', 'NUMERIC_SCALE',
'COLUMN_DEFAULT', 'COLLATION_NAME')
DEBUG:sqlalchemy.engine.base.Engine:Row (u'dbo', u'unicode_err_table',
u'sort', 'YES', u'int', 1, None, 10, 0, None, None)
INFO:sqlalchemy.engine.base.Engine:
DROP TABLE unicode_err_table
INFO:sqlalchemy.engine.base.Engine:()
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa4490e0> being returned to pool
FAIL
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:DELETE FROM unicode_table
INFO:sqlalchemy.engine.base.Engine:()
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
test.sql.test_types.UnicodeTest.test_native_unicode ... FAIL
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:DELETE FROM unicode_table
INFO:sqlalchemy.engine.base.Engine:()
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
test.sql.test_types.UnicodeTest.test_round_trip ...
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:INSERT INTO unicode_table
(unicode_varchar, unicode_text) OUTPUT
inserted.id VALUES (?, ?)
INFO:sqlalchemy.engine.base.Engine:(u'Alors vous imaginez ma surprise,
au lever du jour, quand une dr\xf4le de petite voix m\u2019a r\xe9veill
\xe9. Elle disait: \xab S\u2019il vous pla\xeet\u2026 dessine-moi un
mouton! \xbb', u'Alors vous imaginez ma surprise, au lever du jour,
quand une dr\xf4le de petite voix m\u2019a r\xe9veill\xe9. Elle
disait: \xab S\u2019il vous pla\xeet\u2026 dessine-moi un mouton!
\xbb')
DEBUG:sqlalchemy.engine.base.Engine:Col ('id',)
DEBUG:sqlalchemy.engine.base.Engine:Row (2, )
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:SELECT
unicode_table.id,
unicode_table.unicode_varchar, unicode_table.unicode_text
FROM unicode_table
INFO:sqlalchemy.engine.base.Engine:()
DEBUG:sqlalchemy.engine.base.Engine:Col ('id', 'unicode_varchar',
'unicode_text')
DEBUG:sqlalchemy.engine.base.Engine:Row (2, u'Alors vous imaginez ma
surprise, au lever du jour, quand une dr\xf4le de petite voix m\u2019a
r\xe9veill\xe9. Elle disait: \xab S\u2019il vous pla\xeet\u2026
dessine-moi un mouton! \xbb', u'Alors vous imaginez ma surprise, au
lever du jour, quand une dr\xf4le de petite voix m\u2019a r\xe9veill
\xe9. Elle disait: \xab S\u2019il vous pla\xeet\u2026 dessine-moi un
mouton! \xbb')
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:DELETE FROM unicode_table
INFO:sqlalchemy.engine.base.Engine:()
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
ok
test.sql.test_types.UnicodeTest.test_round_trip_executemany ...
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:INSERT INTO unicode_table
(unicode_varchar, unicode_text) VALUES (?, ?)
INFO:sqlalchemy.engine.base.Engine:((u'Alors vous imaginez ma
surprise, au lever du jour, quand une dr\xf4le de petite voix m\u2019a
r\xe9veill\xe9. Elle disait: \xab S\u2019il vous pla\xeet\u2026
dessine-moi un mouton! \xbb', u'Alors vous imaginez ma surprise, au
lever du jour, quand une dr\xf4le de petite voix m\u2019a r\xe9veill
\xe9. Elle disait: \xab S\u2019il vous pla\xeet\u2026 dessine-moi un
mouton! \xbb'), (u'Alors vous imaginez ma surprise, au lever du jour,
quand une dr\xf4le de petite voix m\u2019a r\xe9veill\xe9. Elle
disait: \xab S\u2019il vous pla\xeet\u2026 dessine-moi un mouton!
\xbb', u'Alors vous imaginez ma surprise, au lever du jour, quand une
dr\xf4le de petite voix m\u2019a r\xe9veill\xe9. Elle disait: \xab S
\u2019il vous pla\xeet\u2026 dessine-moi un mouton! \xbb'))
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:SELECT
unicode_table.id,
unicode_table.unicode_varchar, unicode_table.unicode_text
FROM unicode_table
INFO:sqlalchemy.engine.base.Engine:()
DEBUG:sqlalchemy.engine.base.Engine:Col ('id', 'unicode_varchar',
'unicode_text')
DEBUG:sqlalchemy.engine.base.Engine:Row (3, u'Alors vous imaginez ma
surprise, au lever du jour, quand une dr\xf4le de petite voix m\u2019a
r\xe9veill\xe9. Elle disait: \xab S\u2019il vous pla\xeet\u2026
dessine-moi un mouton! \xbb', u'Alors vous imaginez ma surprise, au
lever du jour, quand une dr\xf4le de petite voix m\u2019a r\xe9veill
\xe9. Elle disait: \xab S\u2019il vous pla\xeet\u2026 dessine-moi un
mouton! \xbb')
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:DELETE FROM unicode_table
INFO:sqlalchemy.engine.base.Engine:()
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
ok
test.sql.test_types.UnicodeTest.test_unicode_warnings ...
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:DELETE FROM unicode_table
INFO:sqlalchemy.engine.base.Engine:()
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
ok
test.sql.test_types.UnicodeTest.test_union ...
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:INSERT INTO unicode_table
(unicode_varchar, unicode_text) OUTPUT
inserted.id VALUES (?, ?)
INFO:sqlalchemy.engine.base.Engine:(u'Alors vous imaginez ma surprise,
au lever du jour, quand une dr\xf4le de petite voix m\u2019a r\xe9veill
\xe9. Elle disait: \xab S\u2019il vous pla\xeet\u2026 dessine-moi un
mouton! \xbb', u'Alors vous imaginez ma surprise, au lever du jour,
quand une dr\xf4le de petite voix m\u2019a r\xe9veill\xe9. Elle
disait: \xab S\u2019il vous pla\xeet\u2026 dessine-moi un mouton!
\xbb')
DEBUG:sqlalchemy.engine.base.Engine:Col ('id',)
DEBUG:sqlalchemy.engine.base.Engine:Row (5, )
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:SELECT
unicode_table.unicode_varchar
FROM unicode_table UNION SELECT unicode_table.unicode_varchar
FROM unicode_table
INFO:sqlalchemy.engine.base.Engine:()
DEBUG:sqlalchemy.engine.base.Engine:Col ('unicode_varchar',)
DEBUG:sqlalchemy.engine.base.Engine:Row (u'Alors vous imaginez ma
surprise, au lever du jour, quand une dr\xf4le de petite voix m\u2019a
r\xe9veill\xe9. Elle disait: \xab S\u2019il vous pla\xeet\u2026
dessine-moi un mouton! \xbb', )
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:DELETE FROM unicode_table
INFO:sqlalchemy.engine.base.Engine:()
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
ok
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> checked out from pool
INFO:sqlalchemy.engine.base.Engine:SELECT [COLUMNS_1].[TABLE_SCHEMA],
[COLUMNS_1].[TABLE_NAME], [COLUMNS_1].[COLUMN_NAME], [COLUMNS_1].
[IS_NULLABLE], [COLUMNS_1].[DATA_TYPE], [COLUMNS_1].
[ORDINAL_POSITION], [COLUMNS_1].[CHARACTER_MAXIMUM_LENGTH],
[COLUMNS_1].[NUMERIC_PRECISION], [COLUMNS_1].[NUMERIC_SCALE],
[COLUMNS_1].[COLUMN_DEFAULT], [COLUMNS_1].[COLLATION_NAME]
FROM [INFORMATION_SCHEMA].[COLUMNS] AS [COLUMNS_1]
WHERE [COLUMNS_1].[TABLE_NAME] = ? AND [COLUMNS_1].[TABLE_SCHEMA] = ?
INFO:sqlalchemy.engine.base.Engine:(u'unicode_table', u'dbo')
DEBUG:sqlalchemy.engine.base.Engine:Col ('TABLE_SCHEMA', 'TABLE_NAME',
'COLUMN_NAME', 'IS_NULLABLE', 'DATA_TYPE', 'ORDINAL_POSITION',
'CHARACTER_MAXIMUM_LENGTH', 'NUMERIC_PRECISION', 'NUMERIC_SCALE',
'COLUMN_DEFAULT', 'COLLATION_NAME')
DEBUG:sqlalchemy.engine.base.Engine:Row (u'dbo', u'unicode_table',
u'id', 'NO', u'int', 1, None, 10, 0, None, None)
INFO:sqlalchemy.engine.base.Engine:
DROP TABLE unicode_table
INFO:sqlalchemy.engine.base.Engine:()
INFO:sqlalchemy.engine.base.Engine:COMMIT
DEBUG:sqlalchemy.pool.QueuePool:Connection <pyodbc.Connection object
at 0xa3fdfa0> being returned to pool
DEBUG:sqlalchemy.pool.QueuePool:Closing connection <pyodbc.Connection
object at 0xa4490e0>
DEBUG:sqlalchemy.pool.QueuePool:Exception closing connection
<pyodbc.Connection object at 0xa4490e0>
INFO:sqlalchemy.pool.QueuePool:Pool disposed. Pool size: 5
Connections in pool: 0 Current Overflow: -5 Current Checked out
connections: 0
INFO:sqlalchemy.pool.QueuePool:Pool recreating
DEBUG:sqlalchemy.pool.QueuePool:Closing connection <pyodbc.Connection
object at 0xa3fdfa0>
DEBUG:sqlalchemy.pool.QueuePool:Exception closing connection
<pyodbc.Connection object at 0xa3fdfa0>
INFO:sqlalchemy.pool.QueuePool:Pool disposed. Pool size: 5
Connections in pool: 0 Current Overflow: -5 Current Checked out
connections: 0
INFO:sqlalchemy.pool.QueuePool:Pool recreating
INFO:sqlalchemy.pool.QueuePool:Pool disposed. Pool size: 5
Connections in pool: 0 Current Overflow: -5 Current Checked out
connections: 0
INFO:sqlalchemy.pool.QueuePool:Pool recreating
INFO:sqlalchemy.pool.QueuePool:Pool disposed. Pool size: 5
Connections in pool: 0 Current Overflow: -5 Current Checked out
connections: 0
INFO:sqlalchemy.pool.QueuePool:Pool recreating
INFO:sqlalchemy.pool.QueuePool:Pool disposed. Pool size: 5
Connections in pool: 0 Current Overflow: -5 Current Checked out
connections: 0
INFO:sqlalchemy.pool.QueuePool:Pool recreating
INFO:sqlalchemy.pool.QueuePool:Pool disposed. Pool size: 5
Connections in pool: 0 Current Overflow: -5 Current Checked out
connections: 0
INFO:sqlalchemy.pool.QueuePool:Pool recreating
INFO:sqlalchemy.pool.QueuePool:Pool disposed. Pool size: 5
Connections in pool: 0 Current Overflow: -5 Current Checked out
connections: 0
INFO:sqlalchemy.pool.QueuePool:Pool recreating
INFO:sqlalchemy.pool.QueuePool:Pool disposed. Pool size: 5
Connections in pool: 0 Current Overflow: -5 Current Checked out
connections: 0
INFO:sqlalchemy.pool.QueuePool:Pool recreating
======================================================================
FAIL: test.sql.test_types.UnicodeTest.test_ignoring_unicode_error
----------------------------------------------------------------------
Traceback (most recent call last):
File "/opt/home/vo63573/satest/lib/python2.6/site-packages/nose/
case.py", line 197, in runTest
self.test(*self.arg)
File "<string>", line 1, in <lambda>
File "/opt/home/vo63573/satest/src/sqlalchemy/./test/lib/
testing.py", line 53, in decorate
return fn(*args, **kw)
File "/opt/home/vo63573/satest/src/sqlalchemy/./test/sql/
test_types.py", line 833, in test_ignoring_unicode_error
eq_(x, unicodedata)
File "/opt/home/vo63573/satest/src/sqlalchemy/./test/lib/
testing.py", line 499, in eq_
assert a == b, msg or "%r != %r" % (a, b)
AssertionError: u'Alors vous imaginez ma surprise, au lever du jour,
quand une drle de petite voix m?a rveill. Elle disait: S?il vous
plat? dessine-moi un mouton! ' != u'Alors vous imaginez ma surprise,
au lever du jour, quand une dr\xf4le de petite voix m\u2019a r\xe9veill
\xe9. Elle disait: \xab S\u2019il vous pla\xeet\u2026 dessine-moi un
mouton! \xbb'
-------------------- >> begin captured logging << --------------------
sqlalchemy.pool.QueuePool: DEBUG: Created new connection
<pyodbc.Connection object at 0xa4490e0>
sqlalchemy.engine.base.Engine: INFO: SELECT user_name() as user_name;
sqlalchemy.engine.base.Engine: INFO: ()
sqlalchemy.engine.base.Engine: DEBUG: Col ('user_name',)
sqlalchemy.engine.base.Engine: DEBUG: Row (u'SPEED_IT', )
sqlalchemy.engine.base.Engine: INFO:
SELECT default_schema_name FROM
sys.database_principals
WHERE name = ?
AND type = 'S'
sqlalchemy.engine.base.Engine: INFO: (u'SPEED_IT',)
sqlalchemy.engine.base.Engine: DEBUG: Col ('default_schema_name',)
sqlalchemy.engine.base.Engine: DEBUG: Row (u'dbo', )
sqlalchemy.pool.QueuePool: DEBUG: Connection <pyodbc.Connection object
at 0xa4490e0> checked out from pool
sqlalchemy.engine.base.Engine: INFO: SELECT [COLUMNS_1].
[TABLE_SCHEMA], [COLUMNS_1].[TABLE_NAME], [COLUMNS_1].[COLUMN_NAME],
[COLUMNS_1].[IS_NULLABLE], [COLUMNS_1].[DATA_TYPE], [COLUMNS_1].
[ORDINAL_POSITION], [COLUMNS_1].[CHARACTER_MAXIMUM_LENGTH],
[COLUMNS_1].[NUMERIC_PRECISION], [COLUMNS_1].[NUMERIC_SCALE],
[COLUMNS_1].[COLUMN_DEFAULT], [COLUMNS_1].[COLLATION_NAME]
FROM [INFORMATION_SCHEMA].[COLUMNS] AS [COLUMNS_1]
WHERE [COLUMNS_1].[TABLE_NAME] = ? AND [COLUMNS_1].[TABLE_SCHEMA] = ?
sqlalchemy.engine.base.Engine: INFO: (u'unicode_err_table', u'dbo')
sqlalchemy.engine.base.Engine: DEBUG: Col ('TABLE_SCHEMA',
'TABLE_NAME', 'COLUMN_NAME', 'IS_NULLABLE', 'DATA_TYPE',
'ORDINAL_POSITION', 'CHARACTER_MAXIMUM_LENGTH', 'NUMERIC_PRECISION',
'NUMERIC_SCALE', 'COLUMN_DEFAULT', 'COLLATION_NAME')
sqlalchemy.engine.base.Engine: INFO:
CREATE TABLE unicode_err_table (
sort INTEGER NULL,
plain_varchar_no_coding_error VARCHAR(248) NULL
)
sqlalchemy.engine.base.Engine: INFO: ()
sqlalchemy.engine.base.Engine: INFO: COMMIT
sqlalchemy.pool.QueuePool: DEBUG: Connection <pyodbc.Connection object
at 0xa4490e0> being returned to pool
sqlalchemy.pool.QueuePool: DEBUG: Connection <pyodbc.Connection object
at 0xa4490e0> checked out from pool
sqlalchemy.engine.base.Engine: INFO: INSERT INTO unicode_err_table
(sort, plain_varchar_no_coding_error) VALUES (?, ?)
sqlalchemy.engine.base.Engine: INFO: (1, 'Alors vous imaginez ma
surprise, au lever du jour, quand une drle de petite voix ma rveill.
Elle disait: Sil vous plat dessine-moi un mouton! ')
sqlalchemy.engine.base.Engine: INFO: COMMIT
sqlalchemy.pool.QueuePool: DEBUG: Connection <pyodbc.Connection object
at 0xa4490e0> being returned to pool
sqlalchemy.pool.QueuePool: DEBUG: Connection <pyodbc.Connection object
at 0xa4490e0> checked out from pool
sqlalchemy.engine.base.Engine: INFO: SELECT unicode_err_table.sort,
unicode_err_table.plain_varchar_no_coding_error
FROM unicode_err_table
sqlalchemy.engine.base.Engine: INFO: ()
sqlalchemy.engine.base.Engine: DEBUG: Col ('sort',
'plain_varchar_no_coding_error')
sqlalchemy.engine.base.Engine: DEBUG: Row (1, 'Alors vous imaginez ma
surprise, au lever du jour, quand une drle de petite voix ma rveill.
Elle disait: Sil vous plat dessine-moi un mouton! ')
sqlalchemy.pool.QueuePool: DEBUG: Connection <pyodbc.Connection object
at 0xa4490e0> being returned to pool
sqlalchemy.pool.QueuePool: DEBUG: Connection <pyodbc.Connection object
at 0xa4490e0> checked out from pool
sqlalchemy.engine.base.Engine: INFO: INSERT INTO unicode_err_table
(sort, plain_varchar_no_coding_error) VALUES (?, ?)
sqlalchemy.engine.base.Engine: INFO: (2, u'Alors vous imaginez ma
surprise, au lever du jour, quand une dr\xf4le de petite voix m\u2019a
r\xe9veill\xe9. Elle disait: \xab S\u2019il vous pla\xeet\u2026
dessine-moi un mouton! \xbb')
sqlalchemy.engine.base.Engine: INFO: COMMIT
sqlalchemy.pool.QueuePool: DEBUG: Connection <pyodbc.Connection object
at 0xa4490e0> being returned to pool
sqlalchemy.pool.QueuePool: DEBUG: Connection <pyodbc.Connection object
at 0xa4490e0> checked out from pool
sqlalchemy.engine.base.Engine: INFO: SELECT unicode_err_table.sort,
unicode_err_table.plain_varchar_no_coding_error
FROM unicode_err_table ORDER BY unicode_err_table.sort
sqlalchemy.engine.base.Engine: INFO: ()
sqlalchemy.engine.base.Engine: DEBUG: Col ('sort',
'plain_varchar_no_coding_error')
sqlalchemy.engine.base.Engine: DEBUG: Row (1, 'Alors vous imaginez ma
surprise, au lever du jour, quand une drle de petite voix ma rveill.
Elle disait: Sil vous plat dessine-moi un mouton! ')
sqlalchemy.engine.base.Engine: DEBUG: Row (2, 'Alors vous imaginez ma
surprise, au lever du jour, quand une dr\xf4le de petite voix m?a r
\xe9veill\xe9. Elle disait: \xab S?il vous pla\xeet? dessine-moi un
mouton! ')
sqlalchemy.pool.QueuePool: DEBUG: Connection <pyodbc.Connection object
at 0xa4490e0> being returned to pool
sqlalchemy.pool.QueuePool: DEBUG: Connection <pyodbc.Connection object
at 0xa4490e0> checked out from pool
sqlalchemy.engine.base.Engine: INFO: SELECT [COLUMNS_1].
[TABLE_SCHEMA], [COLUMNS_1].[TABLE_NAME], [COLUMNS_1].[COLUMN_NAME],
[COLUMNS_1].[IS_NULLABLE], [COLUMNS_1].[DATA_TYPE], [COLUMNS_1].
[ORDINAL_POSITION], [COLUMNS_1].[CHARACTER_MAXIMUM_LENGTH],
[COLUMNS_1].[NUMERIC_PRECISION], [COLUMNS_1].[NUMERIC_SCALE],
[COLUMNS_1].[COLUMN_DEFAULT], [COLUMNS_1].[COLLATION_NAME]
FROM [INFORMATION_SCHEMA].[COLUMNS] AS [COLUMNS_1]
WHERE [COLUMNS_1].[TABLE_NAME] = ? AND [COLUMNS_1].[TABLE_SCHEMA] = ?
sqlalchemy.engine.base.Engine: INFO: (u'unicode_err_table', u'dbo')
sqlalchemy.engine.base.Engine: DEBUG: Col ('TABLE_SCHEMA',
'TABLE_NAME', 'COLUMN_NAME', 'IS_NULLABLE', 'DATA_TYPE',
'ORDINAL_POSITION', 'CHARACTER_MAXIMUM_LENGTH', 'NUMERIC_PRECISION',
'NUMERIC_SCALE', 'COLUMN_DEFAULT', 'COLLATION_NAME')
sqlalchemy.engine.base.Engine: DEBUG: Row (u'dbo',
u'unicode_err_table', u'sort', 'YES', u'int', 1, None, 10, 0, None,
None)
sqlalchemy.engine.base.Engine: INFO:
DROP TABLE unicode_err_table
sqlalchemy.engine.base.Engine: INFO: ()
sqlalchemy.engine.base.Engine: INFO: COMMIT
sqlalchemy.pool.QueuePool: DEBUG: Connection <pyodbc.Connection object
at 0xa4490e0> being returned to pool
--------------------- >> end captured logging << ---------------------
======================================================================
FAIL: test.sql.test_types.UnicodeTest.test_native_unicode
----------------------------------------------------------------------
Traceback (most recent call last):
File "/opt/home/vo63573/satest/lib/python2.6/site-packages/nose/
case.py", line 197, in runTest
self.test(*self.arg)
File "/opt/home/vo63573/satest/src/sqlalchemy/./test/sql/
test_types.py", line 636, in test_native_unicode
testing.db.dialect.returns_unicode_strings)
AssertionError: name: mssql driver pyodbc
returns_unicode_strings=conditional
----------------------------------------------------------------------
Ran 7 tests in 0.358s
> ...
>
> read more »