summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2013-11-21 13:30:32 -0500
committerMike Bayer <mike_mp@zzzcomputing.com>2013-11-21 13:37:05 -0500
commit3a3aeb431e08277346078fe60437f1fcfde957e2 (patch)
treed6e13422cdbef7d37fae8adb29e668b050f403b7 /lib/sqlalchemy
parent34478fbb0b7a8e6068a9d30a726269a7080e2a41 (diff)
downloadsqlalchemy-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.py8
-rw-r--r--lib/sqlalchemy/testing/assertions.py9
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))