jan.dittberner 32aeb8e95e integrated patch by Christian Simms posted at http://groups.google.com/group/migrate-users/browse_thread/thread/952a2185baf70c4d
fix all test cases for sqlalchemy>=0.4 and still works with sqlalchemy>=0.3.10
fixes #9
2008-02-14 19:10:47 +00:00

50 lines
2.1 KiB
Python

from migrate.changeset import ansisql,constraint,exceptions
from sqlalchemy.databases import sqlite as sa_base
#import sqlalchemy as sa
SQLiteSchemaGenerator = sa_base.SQLiteSchemaGenerator
class SQLiteColumnGenerator(SQLiteSchemaGenerator,ansisql.ANSIColumnGenerator):
pass
class SQLiteColumnDropper(ansisql.ANSIColumnDropper):
def visit_column(self,column):
raise exceptions.NotSupportedError("SQLite does not support "
"DROP COLUMN; see http://www.sqlite.org/lang_altertable.html")
class SQLiteSchemaChanger(ansisql.ANSISchemaChanger):
def _not_supported(self,op):
raise exceptions.NotSupportedError("SQLite does not support "
"%s; see http://www.sqlite.org/lang_altertable.html"%op)
def _visit_column_nullable(self,table_name,col_name,delta):
return self._not_supported('ALTER TABLE')
def _visit_column_default(self,table_name,col_name,delta):
return self._not_supported('ALTER TABLE')
def _visit_column_type(self,table_name,col_name,delta):
return self._not_supported('ALTER TABLE')
def _visit_column_name(self,table_name,col_name,delta):
return self._not_supported('ALTER TABLE')
def visit_index(self,param):
self._not_supported('ALTER INDEX')
class SQLiteConstraintGenerator(ansisql.ANSIConstraintGenerator):
def visit_migrate_primary_key_constraint(self,constraint):
tmpl = "CREATE UNIQUE INDEX %s ON %s ( %s )"
cols = ','.join([c.name for c in constraint.columns])
tname = constraint.table.name
name = constraint.name
msg = tmpl%(name,tname,cols)
self.append(msg)
self.execute()
class SQLiteConstraintDropper(ansisql.ANSIColumnDropper):
def visit_migrate_primary_key_constraint(self,constraint):
tmpl = "DROP INDEX %s "
name = constraint.name
msg = tmpl%(name)
self.append(msg)
self.execute()
class SQLiteDialect(ansisql.ANSIDialect):
columngenerator = SQLiteColumnGenerator
columndropper = SQLiteColumnDropper
schemachanger = SQLiteSchemaChanger
constraintgenerator = SQLiteConstraintGenerator
constraintdropper = SQLiteConstraintDropper