From d6c5c49d1d86aa6bcef6bdd582ee1d94852b6448 Mon Sep 17 00:00:00 2001 From: Marco Giusti Date: Wed, 13 Feb 2019 16:18:48 +0100 Subject: [PATCH] Add a converter for boolean fields Sometime a numeric column is mapped to a boolean field. In this case the driver should return a boolean. Fix #195 --- sql_server/pyodbc/operations.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sql_server/pyodbc/operations.py b/sql_server/pyodbc/operations.py index 7cfc31f9..98f70e0a 100644 --- a/sql_server/pyodbc/operations.py +++ b/sql_server/pyodbc/operations.py @@ -102,6 +102,9 @@ def convert_uuidfield_value(self, value, expression, connection): value = uuid.UUID(value) return value + def convert_booleanfield_value(self, value, expression, connection): + return bool(value) if value in (0, 1) else value + def date_extract_sql(self, lookup_type, field_name): if lookup_type == 'week_day': return "DATEPART(weekday, %s)" % field_name @@ -195,6 +198,8 @@ def get_db_converters(self, expression): converters.append(self.convert_floatfield_value) elif internal_type == 'UUIDField': converters.append(self.convert_uuidfield_value) + elif internal_type in ('BooleanField', 'NullBooleanField'): + converters.append(self.convert_booleanfield_value) return converters def last_insert_id(self, cursor, table_name, pk_name):