diff options
| author | Frazer McLean <frazer@frazermclean.co.uk> | 2016-06-11 21:47:33 +0200 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2017-03-17 14:02:15 -0400 |
| commit | fadb8d61babb76ef7bdbc98279096a8900c7328d (patch) | |
| tree | 2e6113d9c9ec665ed7785e4d7273b8830520e7af /lib/sqlalchemy/testing/suite/test_reflection.py | |
| parent | 63a7b2d2d9402b06f9bc7745eed2d98ae9f8b11c (diff) | |
| download | sqlalchemy-fadb8d61babb76ef7bdbc98279096a8900c7328d.tar.gz | |
Implement comments for tables, columns
Added support for SQL comments on :class:`.Table` and :class:`.Column`
objects, via the new :paramref:`.Table.comment` and
:paramref:`.Column.comment` arguments. The comments are included
as part of DDL on table creation, either inline or via an appropriate
ALTER statement, and are also reflected back within table reflection,
as well as via the :class:`.Inspector`. Supported backends currently
include MySQL, Postgresql, and Oracle.
Co-authored-by: Mike Bayer <mike_mp@zzzcomputing.com>
Fixes: #1546
Change-Id: Ib90683850805a2b4ee198e420dc294f32f15d35d
Diffstat (limited to 'lib/sqlalchemy/testing/suite/test_reflection.py')
| -rw-r--r-- | lib/sqlalchemy/testing/suite/test_reflection.py | 46 |
1 files changed, 44 insertions, 2 deletions
diff --git a/lib/sqlalchemy/testing/suite/test_reflection.py b/lib/sqlalchemy/testing/suite/test_reflection.py index 572cc4a0a..a761c0882 100644 --- a/lib/sqlalchemy/testing/suite/test_reflection.py +++ b/lib/sqlalchemy/testing/suite/test_reflection.py @@ -102,6 +102,11 @@ class ComponentReflectionTest(fixtures.TablesTest): schema=schema, test_needs_fk=True, ) + Table('comment_test', metadata, + Column('id', sa.Integer, primary_key=True, comment='id comment'), + Column('data', sa.String(20), comment='data comment'), + schema=schema, + comment='the test table comment') if testing.requires.index_reflection.enabled: cls.define_index(metadata, users) @@ -203,8 +208,11 @@ class ComponentReflectionTest(fixtures.TablesTest): answer = ['email_addresses_v', 'users_v'] eq_(sorted(table_names), answer) else: - table_names = insp.get_table_names(schema, - order_by=order_by) + table_names = [ + t for t in insp.get_table_names( + schema, + order_by=order_by) if t not in ('comment_test', )] + if order_by == 'foreign_key': answer = ['users', 'email_addresses', 'dingalings'] eq_(table_names, answer) @@ -235,6 +243,40 @@ class ComponentReflectionTest(fixtures.TablesTest): def test_get_table_names_fks(self): self._test_get_table_names(order_by='foreign_key') + @testing.requires.comment_reflection + def test_get_comments(self): + self._test_get_comments() + + @testing.requires.comment_reflection + @testing.requires.schemas + def test_get_comments_with_schema(self): + self._test_get_comments(testing.config.test_schema) + + def _test_get_comments(self, schema=None): + insp = inspect(testing.db) + + eq_( + insp.get_table_comment("comment_test", schema=schema), + {"text": "the test table comment"} + ) + + eq_( + insp.get_table_comment("users", schema=schema), + {"text": None} + ) + + eq_( + [ + {"name": rec['name'], "comment": rec['comment']} + for rec in + insp.get_columns("comment_test", schema=schema) + ], + [ + {'comment': 'id comment', 'name': 'id'}, + {'comment': 'data comment', 'name': 'data'} + ] + ) + @testing.requires.table_reflection @testing.requires.schemas def test_get_table_names_with_schema(self): |
