From: Gaƫtan de Menten Date: Thu, 11 Feb 2010 13:20:41 +0000 (+0000) Subject: slightly simplify/optimize string/unicode bind processor X-Git-Tag: rel_0_6beta2~209 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9d7335f934d3197f572017865220897763d4582b;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git slightly simplify/optimize string/unicode bind processor --- 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