diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-11-21 13:30:32 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2013-11-21 13:37:05 -0500 |
| commit | 3a3aeb431e08277346078fe60437f1fcfde957e2 (patch) | |
| tree | d6e13422cdbef7d37fae8adb29e668b050f403b7 /lib/sqlalchemy | |
| parent | 34478fbb0b7a8e6068a9d30a726269a7080e2a41 (diff) | |
| download | sqlalchemy-3a3aeb431e08277346078fe60437f1fcfde957e2.tar.gz | |
- Fixed bug which prevented the ``serializer`` extension from working
correctly with table or column names that contain non-ASCII
characters. [ticket:2869]
Conflicts:
lib/sqlalchemy/ext/serializer.py
lib/sqlalchemy/sql/selectable.py
lib/sqlalchemy/testing/assertions.py
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/ext/serializer.py | 8 | ||||
| -rw-r--r-- | lib/sqlalchemy/testing/assertions.py | 9 |
2 files changed, 9 insertions, 8 deletions
diff --git a/lib/sqlalchemy/ext/serializer.py b/lib/sqlalchemy/ext/serializer.py index 5a3fb5937..12820e07e 100644 --- a/lib/sqlalchemy/ext/serializer.py +++ b/lib/sqlalchemy/ext/serializer.py @@ -58,7 +58,7 @@ from ..orm.interfaces import MapperProperty from ..orm.attributes import QueryableAttribute from .. import Table, Column from ..engine import Engine -from ..util import pickle +from ..util import pickle, text_type import re import base64 # Py3K @@ -95,9 +95,9 @@ def Serializer(*args, **kw): id = "mapperprop:" + b64encode(pickle.dumps(obj.parent.class_)) + \ ":" + obj.key elif isinstance(obj, Table): - id = "table:" + str(obj) + id = "table:" + text_type(obj.key) elif isinstance(obj, Column) and isinstance(obj.table, Table): - id = "column:" + str(obj.table) + ":" + obj.key + id = "column:" + text_type(obj.table.key) + ":" + text_type(obj.key) elif isinstance(obj, Session): id = "session:" elif isinstance(obj, Engine): @@ -127,7 +127,7 @@ def Deserializer(file, metadata=None, scoped_session=None, engine=None): return None def persistent_load(id): - m = our_ids.match(str(id)) + m = our_ids.match(text_type(id)) if not m: return None else: diff --git a/lib/sqlalchemy/testing/assertions.py b/lib/sqlalchemy/testing/assertions.py index ebd10b130..d8b54dd35 100644 --- a/lib/sqlalchemy/testing/assertions.py +++ b/lib/sqlalchemy/testing/assertions.py @@ -205,12 +205,13 @@ class AssertsCompiledSQL(object): c = clause.compile(dialect=dialect, **kw) param_str = repr(getattr(c, 'params', {})) - # Py3K - #param_str = param_str.encode('utf-8').decode('ascii', 'ignore') - print "\nSQL String:\n" + str(c) + param_str + if util.py3k: + param_str = param_str.encode('utf-8').decode('ascii', 'ignore') - cc = re.sub(r'[\n\t]', '', str(c)) + print("\nSQL String:\n" + util.text_type(c).encode('utf-8') + param_str) + + cc = re.sub(r'[\n\t]', '', util.text_type(c)) eq_(cc, result, "%r != %r on dialect %r" % (cc, result, dialect)) |
