diff --git a/sql_server/pyodbc/base.py b/sql_server/pyodbc/base.py index a6bbb99..ca0a2bd 100644 --- a/sql_server/pyodbc/base.py +++ b/sql_server/pyodbc/base.py @@ -88,11 +88,14 @@ class DatabaseWrapper(BaseDatabaseWrapper): 'NullBooleanField': 'bit', 'OneToOneField': 'int', 'PositiveIntegerField': 'int', + 'PositiveTinyIntegerField': 'tinyint', 'PositiveSmallIntegerField': 'smallint', 'PositiveBigIntegerField': 'bigint', 'SlugField': 'nvarchar(%(max_length)s)', 'SmallAutoField': 'smallint IDENTITY (1, 1)', 'SmallIntegerField': 'smallint', + 'TinyAutoField': 'tinyint IDENTITY (1, 1)', + 'TinyIntegerField': 'tinyint', 'TextField': 'nvarchar(max)', 'TimeField': 'time', 'UUIDField': 'char(32)', @@ -100,6 +103,7 @@ class DatabaseWrapper(BaseDatabaseWrapper): } data_type_check_constraints = { 'PositiveIntegerField': '[%(column)s] >= 0', + 'PositiveTinyIntegerField': '[%(column)s] >= 0', 'PositiveSmallIntegerField': '[%(column)s] >= 0', } operators = { diff --git a/sql_server/pyodbc/operations.py b/sql_server/pyodbc/operations.py index 00eebec..a3e5081 100644 --- a/sql_server/pyodbc/operations.py +++ b/sql_server/pyodbc/operations.py @@ -17,6 +17,21 @@ class DatabaseOperations(BaseDatabaseOperations): compiler_module = 'sql_server.pyodbc.compiler' + integer_field_ranges = { + 'TinyIntegerField': (-128, 127), + 'SmallIntegerField': (-32768, 32767), + 'IntegerField': (-2147483648, 2147483647), + 'BigIntegerField': (-9223372036854775808, 9223372036854775807), + 'PositiveBigIntegerField': (0, 9223372036854775807), + 'PositiveSmallIntegerField': (0, 32767), + 'PositiveTinyIntegerField': (0, 127), + 'PositiveIntegerField': (0, 2147483647), + 'TinyAutoField': (-128, 127), + 'SmallAutoField': (-32768, 32767), + 'AutoField': (-2147483648, 2147483647), + 'BigAutoField': (-9223372036854775808, 9223372036854775807), + } + cast_char_field_without_max_length = 'nvarchar(max)' def _convert_field_to_tz(self, field_name, tzname):