summaryrefslogtreecommitdiff
path: root/migrate/changeset/databases/oracle.py
diff options
context:
space:
mode:
authorjan.dittberner <unknown>2009-01-25 12:52:33 +0000
committerjan.dittberner <unknown>2009-01-25 12:52:33 +0000
commiteb00570991a2b39b005749f7f7c67643bdcaba59 (patch)
treef0b4a4af0dfbc85cf14c23d00e95b24b1a26d2f7 /migrate/changeset/databases/oracle.py
parent728b677e56a8b51c5bda6c127be9837db2c11160 (diff)
downloadsqlalchemy-migrate-eb00570991a2b39b005749f7f7c67643bdcaba59.tar.gz
make migrate.changeset.databases PEP-8 clean and add it to the API docs
Diffstat (limited to 'migrate/changeset/databases/oracle.py')
-rw-r--r--migrate/changeset/databases/oracle.py92
1 files changed, 61 insertions, 31 deletions
diff --git a/migrate/changeset/databases/oracle.py b/migrate/changeset/databases/oracle.py
index 1bb616d..35b146c 100644
--- a/migrate/changeset/databases/oracle.py
+++ b/migrate/changeset/databases/oracle.py
@@ -1,54 +1,74 @@
-from migrate.changeset import ansisql,exceptions
+"""
+ Oracle database specific implementations of changeset classes.
+"""
+
+from migrate.changeset import ansisql, exceptions
from sqlalchemy.databases import oracle as sa_base
import sqlalchemy as sa
OracleSchemaGenerator = sa_base.OracleSchemaGenerator
-class OracleColumnGenerator(OracleSchemaGenerator,ansisql.ANSIColumnGenerator):
+
+class OracleColumnGenerator(OracleSchemaGenerator,
+ ansisql.ANSIColumnGenerator):
pass
+
+
class OracleColumnDropper(ansisql.ANSIColumnDropper):
pass
-class OracleSchemaChanger(OracleSchemaGenerator,ansisql.ANSISchemaChanger):
- def get_column_specification(self,column,**kwargs):
- # Ignore the NOT NULL generated
- override_nullable = kwargs.pop('override_nullable',None)
+
+
+class OracleSchemaChanger(OracleSchemaGenerator, ansisql.ANSISchemaChanger):
+
+ def get_column_specification(self, column, **kwargs):
+ # Ignore the NOT NULL generated
+ override_nullable = kwargs.pop('override_nullable', None)
if override_nullable:
orig = column.nullable
column.nullable = True
- ret=super(OracleSchemaChanger,self).get_column_specification(column,**kwargs)
+ ret = super(OracleSchemaChanger, self).get_column_specification(
+ column, **kwargs)
if override_nullable:
column.nullable = orig
return ret
-
- def visit_column(self,delta):
+
+ def visit_column(self, delta):
keys = delta.keys()
- if 'type' in keys or 'nullable' in keys or 'default' in keys or 'server_default' in keys:
- self._run_subvisit(delta,self._visit_column_change)
+ if 'type' in keys or 'nullable' in keys or 'default' in keys \
+ or 'server_default' in keys:
+ self._run_subvisit(delta, self._visit_column_change)
if 'name' in keys:
- self._run_subvisit(delta,self._visit_column_name)
- def _visit_column_change(self,table_name,col_name,delta):
- if not hasattr(delta,'result_column'):
- # Oracle needs the whole column definition, not just a lone name/type
+ self._run_subvisit(delta, self._visit_column_name)
+
+ def _visit_column_change(self, table_name, col_name, delta):
+ if not hasattr(delta, 'result_column'):
+ # Oracle needs the whole column definition, not just a
+ # lone name/type
raise exceptions.NotSupportedError(
"A column object is required to do this")
-
+
column = delta.result_column
- # Oracle cannot drop a default once created, but it can set it to null.
- # We'll do that if default=None
- # http://forums.oracle.com/forums/message.jspa?messageID=1273234#1273234
- dropdefault_hack = (column.server_default is None and 'server_default' in delta.keys())
- # Oracle apparently doesn't like it when we say "not null" if the
- # column's already not null. Fudge it, so we don't need a new function
- notnull_hack = ((not column.nullable) and ('nullable' not in delta.keys()))
- # We need to specify NULL if we're removing a NOT NULL constraint
+ # Oracle cannot drop a default once created, but it can set it
+ # to null. We'll do that if default=None
+ # http://forums.oracle.com/forums/message.jspa?\
+ # messageID=1273234#1273234
+ dropdefault_hack = (column.server_default is None \
+ and 'server_default' in delta.keys())
+ # Oracle apparently doesn't like it when we say "not null" if
+ # the column's already not null. Fudge it, so we don't need a
+ # new function
+ notnull_hack = ((not column.nullable) \
+ and ('nullable' not in delta.keys()))
+ # We need to specify NULL if we're removing a NOT NULL
+ # constraint
null_hack = (column.nullable and ('nullable' in delta.keys()))
-
-
- if dropdefault_hack:
+
+ if dropdefault_hack:
column.server_default = sa.PassiveDefault(sa.sql.null())
if notnull_hack:
column.nullable = True
- colspec=self.get_column_specification(column,override_nullable=null_hack)
+ colspec=self.get_column_specification(column,
+ override_nullable=null_hack)
if null_hack:
colspec += ' NULL'
if notnull_hack:
@@ -59,18 +79,28 @@ class OracleSchemaChanger(OracleSchemaGenerator,ansisql.ANSISchemaChanger):
self.start_alter_table(table_name)
self.append("MODIFY ")
self.append(colspec)
+
+
class OracleConstraintCommon(object):
- def get_constraint_name(self,cons):
+
+ def get_constraint_name(self, cons):
# Oracle constraints can't guess their name like other DBs
if not cons.name:
raise exceptions.NotSupportedError(
"Oracle constraint names must be explicitly stated")
return cons.name
-class OracleConstraintGenerator(OracleConstraintCommon,ansisql.ANSIConstraintGenerator):
+
+
+class OracleConstraintGenerator(OracleConstraintCommon,
+ ansisql.ANSIConstraintGenerator):
pass
-class OracleConstraintDropper(OracleConstraintCommon,ansisql.ANSIConstraintDropper):
+
+
+class OracleConstraintDropper(OracleConstraintCommon,
+ ansisql.ANSIConstraintDropper):
pass
+
class OracleDialect(ansisql.ANSIDialect):
columngenerator = OracleColumnGenerator
columndropper = OracleColumnDropper