- The warning emitted by the Unicode and String types

with convert_unicode=True no longer embeds the actual
value passed.   This so that the Python warning
registry does not continue to grow in size, the warning
is emitted once as per the warning filter settings,
and large string values don't pollute the output.
[ticket:1822]
This commit is contained in:
Mike Bayer
2010-06-13 16:09:13 -04:00
parent 7378611832
commit 03e0f776be
3 changed files with 34 additions and 3 deletions
+8
View File
@@ -6,6 +6,14 @@ CHANGES
0.6.2
=====
- sql
- The warning emitted by the Unicode and String types
with convert_unicode=True no longer embeds the actual
value passed. This so that the Python warning
registry does not continue to grow in size, the warning
is emitted once as per the warning filter settings,
and large string values don't pollute the output.
[ticket:1822]
- Fixed bug in Enum type which blew away native_enum
flag when used with TypeDecorators or other adaption
scenarios.
+2 -2
View File
@@ -729,7 +729,7 @@ class String(Concatenable, TypeEngine):
if isinstance(value, str):
# end Py2K
util.warn("Unicode type received non-unicode bind "
"param value %r" % value)
"param value.")
return value
return process
else:
@@ -741,7 +741,7 @@ class String(Concatenable, TypeEngine):
return encoder(value, self.unicode_error)[0]
elif value is not None:
util.warn("Unicode type received non-unicode bind "
"param value %r" % value)
"param value")
return value
return process
else:
+24 -1
View File
@@ -7,7 +7,7 @@ from sqlalchemy.util import jython
import operator
from sqlalchemy.test import testing, engines
from sqlalchemy import MetaData, Integer, String, ForeignKey, \
PickleType, create_engine
PickleType, create_engine, Unicode
from sqlalchemy.test.schema import Table, Column
import sqlalchemy as sa
from sqlalchemy.sql import column
@@ -252,6 +252,29 @@ class MemUsageTest(EnsureZeroed):
go()
finally:
metadata.drop_all()
def test_unicode_warnings(self):
metadata = MetaData(testing.db)
table1 = Table("mytable", metadata,
Column('col1', Integer, primary_key=True,
test_needs_autoincrement=True),
Column('col2', Unicode(30)))
metadata.create_all()
i = [1]
@testing.emits_warning()
@profile_memory
def go():
# execute with a non-unicode object.
# a warning is emitted, this warning shouldn't
# clog up memory.
testing.db.execute(table1.select().where(table1.c.col2=='foo%d' % i[0]))
i[0] += 1
try:
go()
finally:
metadata.drop_all()
def test_mapper_reset(self):
metadata = MetaData(testing.db)