summaryrefslogtreecommitdiff
path: root/alembic/ddl/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'alembic/ddl/base.py')
-rw-r--r--alembic/ddl/base.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/alembic/ddl/base.py b/alembic/ddl/base.py
index 32878b1..d497253 100644
--- a/alembic/ddl/base.py
+++ b/alembic/ddl/base.py
@@ -154,6 +154,13 @@ def visit_column_default(element, compiler, **kw):
)
+def _table_for_constraint(constraint):
+ if isinstance(constraint, ForeignKeyConstraint):
+ return constraint.parent
+ else:
+ return constraint.table
+
+
def _columns_for_constraint(constraint):
if isinstance(constraint, ForeignKeyConstraint):
return [fk.parent for fk in constraint.elements]
@@ -163,6 +170,24 @@ def _columns_for_constraint(constraint):
return list(constraint.columns)
+def _fk_spec(constraint):
+ if util.sqla_100:
+ source_columns = constraint.column_keys
+ else:
+ source_columns = [
+ element.parent.key for element in constraint.elements]
+
+ source_table = constraint.parent.name
+ source_schema = constraint.parent.schema
+ target_schema = constraint.elements[0].column.table.schema
+ target_table = constraint.elements[0].column.table.name
+ target_columns = [element.column.name for element in constraint.elements]
+
+ return (
+ source_schema, source_table,
+ source_columns, target_schema, target_table, target_columns)
+
+
def _is_type_bound(constraint):
# this deals with SQLAlchemy #3260, don't copy CHECK constraints
# that will be generated by the type.