opts = []
if constraint.name:
opts.append(("name", repr(constraint.name)))
+ if constraint.onupdate:
+ opts.append(("onupdate", repr(constraint.onupdate)))
+ if constraint.ondelete:
+ opts.append(("ondelete", repr(constraint.ondelete)))
+ if constraint.initially:
+ opts.append(("initially", repr(constraint.initially)))
+ if constraint.deferrable:
+ opts.append(("deferrable", repr(constraint.deferrable)))
+
apply_metadata_schema = constraint.parent.metadata.schema
- # TODO: deferrable, initially, etc.
return "%(prefix)sForeignKeyConstraint([%(cols)s], "\
"[%(refcols)s], %(args)s)" % {
"prefix": _sqlalchemy_autogenerate_prefix(autogen_context),
from sqlalchemy import MetaData, Column, Table, Integer, String, Text, \
Numeric, CHAR, ForeignKey, DATETIME, \
TypeDecorator, CheckConstraint, Unicode, Enum,\
- UniqueConstraint, Boolean
+ UniqueConstraint, Boolean, ForeignKeyConstraint
from sqlalchemy.types import NULLTYPE, TIMESTAMP
from sqlalchemy.dialects import mysql
from sqlalchemy.engine.reflection import Inspector
"existing_type=sa.Integer(), nullable=True, schema='foo')"
)
+ def test_render_fk_constraint_kwarg(self):
+ m = MetaData()
+ t1 = Table('t', m, Column('c', Integer))
+ t2 = Table('t2', m, Column('c_rem', Integer))
+
+ fk = ForeignKeyConstraint([t1.c.c], [t2.c.c_rem], onupdate="CASCADE")
+ eq_ignore_whitespace(
+ autogenerate._render_constraint(fk, self.autogen_context),
+ "sa.ForeignKeyConstraint(['c'], ['t2.c_rem'], onupdate='CASCADE')"
+ )
+
+ fk = ForeignKeyConstraint([t1.c.c], [t2.c.c_rem], ondelete="CASCADE")
+ eq_ignore_whitespace(
+ autogenerate._render_constraint(fk, self.autogen_context),
+ "sa.ForeignKeyConstraint(['c'], ['t2.c_rem'], ondelete='CASCADE')"
+ )
+
+ fk = ForeignKeyConstraint([t1.c.c], [t2.c.c_rem], deferrable=True)
+ eq_ignore_whitespace(
+ autogenerate._render_constraint(fk, self.autogen_context),
+ "sa.ForeignKeyConstraint(['c'], ['t2.c_rem'], deferrable=True)"
+ )
+
+ fk = ForeignKeyConstraint([t1.c.c], [t2.c.c_rem], initially="XYZ")
+ eq_ignore_whitespace(
+ autogenerate._render_constraint(fk, self.autogen_context),
+ "sa.ForeignKeyConstraint(['c'], ['t2.c_rem'], initially='XYZ')"
+ )
+
def test_render_check_constraint_literal(self):
eq_ignore_whitespace(
autogenerate._render_check_constraint(