mirror of
https://github.com/sqlalchemy/sqlalchemy.git
synced 2026-05-28 11:35:19 -04:00
- 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:
@@ -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.
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user