diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2017-01-16 15:57:25 -0500 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2017-01-16 15:57:25 -0500 |
| commit | 751887ad6ed6bd25751c78c383c84a8a70fc8f40 (patch) | |
| tree | afdd5b495c596d7cbef2ec20616ff4b761833913 | |
| parent | 2e610cf1554ffe0b15cd26b212b105219e5cb6b9 (diff) | |
| parent | d8198c2d8779d52a94dc53b0a1582279d6d58fef (diff) | |
| download | sqlalchemy-751887ad6ed6bd25751c78c383c84a8a70fc8f40.tar.gz | |
Merge branch 'master' into rel_1_1
| -rw-r--r-- | doc/build/changelog/changelog_11.rst | 9 | ||||
| -rw-r--r-- | lib/sqlalchemy/engine/threadlocal.py | 2 | ||||
| -rw-r--r-- | lib/sqlalchemy/sql/schema.py | 4 | ||||
| -rw-r--r-- | test/engine/test_reflection.py | 12 |
4 files changed, 19 insertions, 8 deletions
diff --git a/doc/build/changelog/changelog_11.rst b/doc/build/changelog/changelog_11.rst index fc4877e6c..ead292570 100644 --- a/doc/build/changelog/changelog_11.rst +++ b/doc/build/changelog/changelog_11.rst @@ -130,6 +130,15 @@ be inserted into the query in the case that the :class:`.Bundle` construct were used as the selection criteria. + .. change:: repr_for_url_reflect + :tags: bug, sql + + The engine URL embedded in the exception for "could not reflect" + in :meth:`.MetaData.reflect` now conceals the password; also + the ``__repr__`` for :class:`.TLEngine` now acts like that of + :class:`.Engine`, concealing the URL password. Pull request courtesy + Valery Yundin. + .. change:: pg_timestamp_zero_prec :tags: bug, postgresql diff --git a/lib/sqlalchemy/engine/threadlocal.py b/lib/sqlalchemy/engine/threadlocal.py index a22b59c1d..ee31764f3 100644 --- a/lib/sqlalchemy/engine/threadlocal.py +++ b/lib/sqlalchemy/engine/threadlocal.py @@ -135,4 +135,4 @@ class TLEngine(base.Engine): self._connections.trans = [] def __repr__(self): - return 'TLEngine(%s)' % str(self.url) + return 'TLEngine(%r)' % self.url diff --git a/lib/sqlalchemy/sql/schema.py b/lib/sqlalchemy/sql/schema.py index 793750f1c..9bb0eee43 100644 --- a/lib/sqlalchemy/sql/schema.py +++ b/lib/sqlalchemy/sql/schema.py @@ -3811,8 +3811,8 @@ class MetaData(SchemaItem): s = schema and (" schema '%s'" % schema) or '' raise exc.InvalidRequestError( 'Could not reflect: requested table(s) not available ' - 'in %s%s: (%s)' % - (bind.engine.url, s, ', '.join(missing))) + 'in %r%s: (%s)' % + (bind.engine, s, ', '.join(missing))) load = [name for name in only if extend_existing or name not in current] diff --git a/test/engine/test_reflection.py b/test/engine/test_reflection.py index 869fd63e5..0bc5b111e 100644 --- a/test/engine/test_reflection.py +++ b/test/engine/test_reflection.py @@ -932,11 +932,13 @@ class ReflectionTest(fixtures.TestBase, ComparesTables): self.assert_(set(m3.tables.keys()) == set(['rt_c'])) m4 = MetaData(testing.db) - try: - m4.reflect(only=['rt_a', 'rt_f']) - self.assert_(False) - except sa.exc.InvalidRequestError as e: - self.assert_(e.args[0].endswith('(rt_f)')) + + assert_raises_message( + sa.exc.InvalidRequestError, + r"Could not reflect: requested table\(s\) not available in " + r"Engine\(.*?\): \(rt_f\)", + m4.reflect, only=['rt_a', 'rt_f'] + ) m5 = MetaData(testing.db) m5.reflect(only=[]) |
