diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-08-31 14:34:54 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2016-08-31 17:04:35 -0400 |
| commit | c7b9c84312b6b252e68ea704670d0ea7fc0042f0 (patch) | |
| tree | a71b8cbbb123e10a779c3a1f8efb4fc09ce47bf1 /test/engine/test_execute.py | |
| parent | 53c3119ebb6801cbfcaf2841311d117eba250444 (diff) | |
| download | sqlalchemy-c7b9c84312b6b252e68ea704670d0ea7fc0042f0.tar.gz | |
Check for supports_execution at ClauseElement base
Raise a more descriptive exception / message when ClauseElement
or non-SQLAlchemy objects that are not "executable" are erroneously
passed to ``.execute()``; a new exception ObjectNotExecutableError
is raised consistently in all cases.
Change-Id: I2dd393121e2c7e5b6b9e40286a2f25670876e8e4
Fixes: #3786
Diffstat (limited to 'test/engine/test_execute.py')
| -rw-r--r-- | test/engine/test_execute.py | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/engine/test_execute.py b/test/engine/test_execute.py index 8e553307f..49b29f7f2 100644 --- a/test/engine/test_execute.py +++ b/test/engine/test_execute.py @@ -306,6 +306,26 @@ class ExecuteTest(fixtures.TestBase): finally: conn.close() + def test_not_an_executable(self): + for obj in ( + Table("foo", MetaData(), Column("x", Integer)), + Column('x', Integer), + tsa.and_(), + column('foo'), + tsa.and_().compile(), + column('foo').compile(), + MetaData(), + Integer(), + tsa.Index(name='foo'), + tsa.UniqueConstraint('x') + ): + with testing.db.connect() as conn: + assert_raises_message( + tsa.exc.ObjectNotExecutableError, + "Not an executable object", + conn.execute, obj + ) + def test_stmt_exception_non_ascii(self): name = util.u('méil') with testing.db.connect() as conn: |
