From 9d7335f934d3197f572017865220897763d4582b Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ga=C3=ABtan=20de=20Menten?= Date: Thu, 11 Feb 2010 13:20:41 +0000 Subject: [PATCH] slightly simplify/optimize string/unicode bind processor --- lib/sqlalchemy/types.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/lib/sqlalchemy/types.py b/lib/sqlalchemy/types.py index aadd148c07..f4d94c9180 100644 --- a/lib/sqlalchemy/types.py +++ b/lib/sqlalchemy/types.py @@ -524,28 +524,33 @@ class String(Concatenable, TypeEngine): if dialect.supports_unicode_binds and assert_unicode: def process(value): - if not isinstance(value, (unicode, NoneType)): + if value is None or isinstance(value, unicode): + return value + else: if assert_unicode == 'warn': util.warn("Unicode type received non-unicode bind " "param value %r" % value) return value else: - raise exc.InvalidRequestError("Unicode type received non-unicode bind param value %r" % value) - else: - return value + raise exc.InvalidRequestError( + "Unicode type received non-unicode bind " + "param value %r" % value) elif dialect.supports_unicode_binds and self.convert_unicode != 'force': return None else: + encoder = codecs.getencoder(dialect.encoding) def process(value): if isinstance(value, unicode): - return value.encode(dialect.encoding) - elif assert_unicode and not isinstance(value, (unicode, NoneType)): + return encoder(value)[0] + elif assert_unicode and value is not None: if assert_unicode == 'warn': util.warn("Unicode type received non-unicode bind " "param value %r" % value) return value else: - raise exc.InvalidRequestError("Unicode type received non-unicode bind param value %r" % value) + raise exc.InvalidRequestError( + "Unicode type received non-unicode bind " + "param value %r" % value) else: return value return process -- 2.47.3