docs: def get_table_description(self, cursor, table_name, identity_check=True):
          """Returns a description of the table, with DB-API cursor.description interface.
  
          The 'auto_check' parameter has been added to the function argspec.
          If set to True, the function will check each of the table's fields for the
          IDENTITY property (the IDENTITY property is the MSSQL equivalent to an AutoField).
  
          When a field is found with an IDENTITY property, it is given a custom field number
          of SQL_AUTOFIELD, which maps to the 'AutoField' value in the DATA_TYPES_REVERSE dict.
          """
  
          # map pyodbc's cursor.columns to db-api cursor description
          columns = [[c[3], c[4], None, c[6], c[6], c[8], c[10]] for c in cursor.columns(table=table_name)]
          items = []
          for column in columns:
              if identity_check and self._is_auto_field(cursor, table_name, column[0]):
                  column[1] = SQL_AUTOFIELD
              # The conversion from TextField to CharField below is unwise.
              #   A SQLServer db field of type "Text" is not interchangeable with a CharField, no matter how short its max_length.
              #   For example, model.objects.values(<text_field_name>).count() will fail on a sqlserver 'text' field
              if column[1] == Database.SQL_WVARCHAR and column[3] < 4000:
                  column[1] = Database.SQL_WCHAR
              items.append(column)
          return items