diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-10-28 14:13:31 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-10-28 14:17:40 -0400 |
commit | dd4e09d38729c2479af19da082a07f0c44f7026c (patch) | |
tree | 49aa2cef401d89ca448778aaad1a7922cc000891 /lib/sqlalchemy/dialects/mysql/enumerated.py | |
parent | 60b68ff4ee15ad1be42031f90156072cdfe1f1d0 (diff) | |
download | sqlalchemy-dd4e09d38729c2479af19da082a07f0c44f7026c.tar.gz |
Add check for blank string coming from MySQL's enum
MySQL's native ENUM type supports any non-valid value being sent, and
in response will return a blank string. A hardcoded rule to check for
"is returning the blank string" has been added to the MySQL
implementation for ENUM so that this blank string is returned to the
application rather than being rejected as a non-valid value. Note that
if your MySQL enum is linking values to objects, you still get the
blank string back.
Change-Id: I61f85c20293a48b0c11a31f2a19f6756c206bd20
Fixes: #3841
Diffstat (limited to 'lib/sqlalchemy/dialects/mysql/enumerated.py')
-rw-r--r-- | lib/sqlalchemy/dialects/mysql/enumerated.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/sqlalchemy/dialects/mysql/enumerated.py b/lib/sqlalchemy/dialects/mysql/enumerated.py index a47d94ca7..a7cd8911c 100644 --- a/lib/sqlalchemy/dialects/mysql/enumerated.py +++ b/lib/sqlalchemy/dialects/mysql/enumerated.py @@ -130,6 +130,16 @@ class ENUM(sqltypes.Enum, _EnumeratedValues): values, length = self._init_values(values, kw) return sqltypes.Enum._setup_for_values(self, values, objects, kw) + def _object_value_for_elem(self, elem): + # mysql sends back a blank string for any value that + # was persisted that was not in the enums; that is, it does no + # validation on the incoming data, it "truncates" it to be + # the blank string. Return it straight. + if elem == "": + return elem + else: + return super(ENUM, self)._object_value_for_elem(elem) + def __repr__(self): return util.generic_repr( self, to_inspect=[ENUM, _StringType, sqltypes.Enum]) |