summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/sql/ddl.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/sql/ddl.py')
-rw-r--r--lib/sqlalchemy/sql/ddl.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/sqlalchemy/sql/ddl.py b/lib/sqlalchemy/sql/ddl.py
index 48f27b8b8..79fbc8ed6 100644
--- a/lib/sqlalchemy/sql/ddl.py
+++ b/lib/sqlalchemy/sql/ddl.py
@@ -486,6 +486,15 @@ class CreateTable(_CreateDropBase):
]
self.include_foreign_key_constraints = include_foreign_key_constraints
+ if element.comment is not None:
+ event.listen(element, 'after_create',
+ SetTableComment(element, element.comment))
+
+ for col in element.columns:
+ if col.comment is not None:
+ event.listen(element, 'after_create',
+ SetColumnComment(col, col.comment))
+
class _DropView(_CreateDropBase):
"""Semi-public 'DROP VIEW' construct.
@@ -661,6 +670,42 @@ class DropConstraint(_CreateDropBase):
self._create_rule_disable)
+class SetTableComment(_CreateDropBase):
+ """Represent a COMMENT ON TABLE IS statement."""
+
+ __visit_name__ = "set_table_comment"
+
+ def __init__(self, element, comment, **kw):
+ self.comment = comment
+ super(SetTableComment, self).__init__(element, **kw)
+ element._create_rule = util.portable_instancemethod(
+ self._create_rule_disable)
+
+
+class DropTableComment(_CreateDropBase):
+ """Represent a COMMENT ON TABLE IS NULL statement."""
+
+ __visit_name__ = "drop_table_comment"
+
+
+class SetColumnComment(_CreateDropBase):
+ """Represent a COMMENT ON COLUMN IS statement."""
+
+ __visit_name__ = "set_column_comment"
+
+ def __init__(self, element, comment, **kw):
+ self.comment = comment
+ super(SetColumnComment, self).__init__(element, **kw)
+ element._create_rule = util.portable_instancemethod(
+ self._create_rule_disable)
+
+
+class DropColumnComment(_CreateDropBase):
+ """Represent a COMMENT ON COLUMN IS NULL statement."""
+
+ __visit_name__ = "drop_column_comment"
+
+
class DDLBase(SchemaVisitor):
def __init__(self, connection):
self.connection = connection