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.
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:
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:
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
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)