web/lib/django/db/backends/sqlite3/creation.py
changeset 29 cc9b7e14412b
parent 0 0d40e90630ef
equal deleted inserted replaced
28:b758351d191f 29:cc9b7e14412b
     1 import os
     1 import os
     2 import sys
     2 import sys
     3 from django.conf import settings
       
     4 from django.db.backends.creation import BaseDatabaseCreation
     3 from django.db.backends.creation import BaseDatabaseCreation
     5 
     4 
     6 class DatabaseCreation(BaseDatabaseCreation):
     5 class DatabaseCreation(BaseDatabaseCreation):
     7     # SQLite doesn't actually support most of these types, but it "does the right
     6     # SQLite doesn't actually support most of these types, but it "does the right
     8     # thing" given more verbose field definitions, so leave them as is so that
     7     # thing" given more verbose field definitions, so leave them as is so that
    17         'DecimalField':                 'decimal',
    16         'DecimalField':                 'decimal',
    18         'FileField':                    'varchar(%(max_length)s)',
    17         'FileField':                    'varchar(%(max_length)s)',
    19         'FilePathField':                'varchar(%(max_length)s)',
    18         'FilePathField':                'varchar(%(max_length)s)',
    20         'FloatField':                   'real',
    19         'FloatField':                   'real',
    21         'IntegerField':                 'integer',
    20         'IntegerField':                 'integer',
       
    21         'BigIntegerField':              'bigint',
    22         'IPAddressField':               'char(15)',
    22         'IPAddressField':               'char(15)',
    23         'NullBooleanField':             'bool',
    23         'NullBooleanField':             'bool',
    24         'OneToOneField':                'integer',
    24         'OneToOneField':                'integer',
    25         'PositiveIntegerField':         'integer unsigned',
    25         'PositiveIntegerField':         'integer unsigned',
    26         'PositiveSmallIntegerField':    'smallint unsigned',
    26         'PositiveSmallIntegerField':    'smallint unsigned',
    27         'SlugField':                    'varchar(%(max_length)s)',
    27         'SlugField':                    'varchar(%(max_length)s)',
    28         'SmallIntegerField':            'smallint',
    28         'SmallIntegerField':            'smallint',
    29         'TextField':                    'text',
    29         'TextField':                    'text',
    30         'TimeField':                    'time',
    30         'TimeField':                    'time',
    31     }
    31     }
    32     
    32 
    33     def sql_for_pending_references(self, model, style, pending_references):
    33     def sql_for_pending_references(self, model, style, pending_references):
    34         "SQLite3 doesn't support constraints"
    34         "SQLite3 doesn't support constraints"
    35         return []
    35         return []
    36 
    36 
    37     def sql_remove_table_constraints(self, model, references_to_delete, style):
    37     def sql_remove_table_constraints(self, model, references_to_delete, style):
    38         "SQLite3 doesn't support constraints"
    38         "SQLite3 doesn't support constraints"
    39         return []
    39         return []
    40         
    40 
    41     def _create_test_db(self, verbosity, autoclobber):
    41     def _create_test_db(self, verbosity, autoclobber):
    42         if settings.TEST_DATABASE_NAME and settings.TEST_DATABASE_NAME != ":memory:":
    42         test_database_name = self.connection.settings_dict['TEST_NAME']
    43             test_database_name = settings.TEST_DATABASE_NAME
    43         if test_database_name and test_database_name != ":memory:":
    44             # Erase the old test database
    44             # Erase the old test database
    45             if verbosity >= 1:
    45             if verbosity >= 1:
    46                 print "Destroying old test database..."
    46                 print "Destroying old test database..."
    47             if os.access(test_database_name, os.F_OK):
    47             if os.access(test_database_name, os.F_OK):
    48                 if not autoclobber:
    48                 if not autoclobber:
    61             if verbosity >= 1:
    61             if verbosity >= 1:
    62                 print "Creating test database..."
    62                 print "Creating test database..."
    63         else:
    63         else:
    64             test_database_name = ":memory:"
    64             test_database_name = ":memory:"
    65         return test_database_name
    65         return test_database_name
    66         
    66 
    67     def _destroy_test_db(self, test_database_name, verbosity):
    67     def _destroy_test_db(self, test_database_name, verbosity):
    68         if test_database_name and test_database_name != ":memory:":
    68         if test_database_name and test_database_name != ":memory:":
    69             # Remove the SQLite database file
    69             # Remove the SQLite database file
    70             os.remove(test_database_name)
    70             os.remove(test_database_name)