name = _render_gen_name(autogen_context, op.constraint_name)
schema = _ident(op.schema) if op.schema else None
type_ = _ident(op.constraint_type) if op.constraint_type else None
-
+ if_exists = op.if_exists
params_strs = []
params_strs.append(repr(name))
if not autogen_context._has_batch:
params_strs.append(f"schema={schema!r}")
if type_ is not None:
params_strs.append(f"type_={type_!r}")
+ if if_exists is not None:
+ params_strs.append(f"if_exists={if_exists}")
return f"{prefix}drop_constraint({', '.join(params_strs)})"
.. change::
:tags: usecase, autogenerate, postgresql
+ :tickets: 1626
Added :paramref:`.Operations.add_column.if_not_exists` and
:paramref:`.Operations.drop_column.if_exists` to render ``IF [NOT] EXISTS``
:tags: usecase, operations
:tickets: 1650
- Added :paramref:`.op.drop_constraint.if_exists` parameter to
- :func:`.op.drop_constraint` which will render "DROP CONSTRAINT IF EXISTS".
- Pull request courtesy Aaron Griffin.
+ Added :paramref:`.Operations.drop_constraint.if_exists` parameter to
+ :meth:`.Operations.drop_constraint` which will render "DROP CONSTRAINT IF
+ EXISTS". The parameter also supports autogenerate rendering allowing them
+ to be turned on via a custom :class:`.Rewriter`. Pull request courtesy
+ Aaron Griffin.
"schema=foo.camel_schema, type_='unique')",
)
+ def test_render_drop_unique_constraint_if_exists(self):
+ """
+ autogenerate.render._drop_constraint
+ """
+ t = self.table()
+ uq = UniqueConstraint(t.c.code, name="uq_test_code")
+ op_obj = ops.DropConstraintOp.from_constraint(uq)
+ op_obj.if_exists = True
+ eq_ignore_whitespace(
+ autogenerate.render_op_text(self.autogen_context, op_obj),
+ "op.drop_constraint('uq_test_code', 'test', "
+ "type_='unique', if_exists=True)",
+ )
+
def test_add_fk_constraint(self):
m = MetaData()
Table("a", m, Column("id", Integer, primary_key=True))