diff options
author | Frazer McLean <frazer@frazermclean.co.uk> | 2016-06-13 10:31:18 -0400 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-06-13 10:31:18 -0400 |
commit | 84974cf09220105bc7a92e5bcde31f52827c1de7 (patch) | |
tree | 250677d68a0c6ba0070a97cd6cd3a7c2c2949c50 /lib/sqlalchemy/sql/ddl.py | |
parent | 7189d0bc82598c2d6dcbb55b054837416db2ee7d (diff) | |
download | sqlalchemy-pr_github_284.tar.gz |
Comment supportpr_github_284
Implementation of [#1546 (BitBucket)](https://bitbucket.org/zzzeek/sqlalchemy/issues/1546).
Very unfinished but I have reflection and setting after table creation working for PostgreSQL.
If you're not opposed, perhaps best to continue discussion on Gerrit?
Change-Id: Ib90683850805a2b4ee198e420dc294f32f15d35d
Pull-request: https://github.com/zzzeek/sqlalchemy/pull/284
Diffstat (limited to 'lib/sqlalchemy/sql/ddl.py')
-rw-r--r-- | lib/sqlalchemy/sql/ddl.py | 45 |
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 |