summaryrefslogtreecommitdiff
path: root/migrate/changeset/databases/sqlite.py
diff options
context:
space:
mode:
authorjan.dittberner <unknown>2008-02-06 18:39:07 +0000
committerjan.dittberner <unknown>2008-02-06 18:39:07 +0000
commit2cfe1fc31c0dfa8241200f635d8e7f6cfce2b507 (patch)
tree69541da758ab44652badc59ec0ce659364bdfe7f /migrate/changeset/databases/sqlite.py
downloadsqlalchemy-migrate-2cfe1fc31c0dfa8241200f635d8e7f6cfce2b507.tar.gz
moved trunk, branches and tags to project root
fixes Issue #5
Diffstat (limited to 'migrate/changeset/databases/sqlite.py')
-rw-r--r--migrate/changeset/databases/sqlite.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/migrate/changeset/databases/sqlite.py b/migrate/changeset/databases/sqlite.py
new file mode 100644
index 0000000..5893201
--- /dev/null
+++ b/migrate/changeset/databases/sqlite.py
@@ -0,0 +1,49 @@
+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(object):
+ 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