-
-from django.db import connection
-from south.db import generic
-
-class DatabaseOperations(generic.DatabaseOperations):
-
- """
- MySQL implementation of database operations.
- """
-
- alter_string_set_type = ''
- alter_string_set_null = 'MODIFY %(column)s %(type)s NULL;'
- alter_string_drop_null = 'MODIFY %(column)s %(type)s NOT NULL;'
-
- def rename_column(self, table_name, old, new):
- if old == new:
- return []
-
- qn = connection.ops.quote_name
-
- rows = [x for x in self.execute('DESCRIBE %s' % (qn(table_name),)) if x[0] == old]
-
- if not rows:
- raise ValueError("No column '%s' in '%s'." % (old, table_name))
-
- params = (
- qn(table_name),
- qn(old),
- qn(new),
- "%s %s %s %s %s" % (
- rows[0][1],
- rows[0][2] == "YES" and "NULL" or "NOT NULL",
- rows[0][3] == "PRI" and "PRIMARY KEY" or "",
- rows[0][4] and "DEFAULT %s" % rows[0][4] or "",
- rows[0][5] or "",
- ),
- )
- self.execute('ALTER TABLE %s CHANGE COLUMN %s %s %s;' % params)
-
-
- def rename_table(self, old_table_name, table_name):
- """
- Renames the table 'old_table_name' to 'table_name'.
- """
- if old_table_name == table_name:
- # No Operation
- return
- qn = connection.ops.quote_name
- params = (qn(old_table_name), qn(table_name))
- self.execute('RENAME TABLE %s TO %s;' % params)
\ No newline at end of file