from sqlalchemy import Column from sqlalchemy import Integer from sqlalchemy import MetaData from sqlalchemy import select from sqlalchemy import String from sqlalchemy import Table from sqlalchemy.sql import util as sql_util from sqlalchemy.sql.elements import ColumnElement from sqlalchemy.testing import eq_ from sqlalchemy.testing import fixtures class MiscTest(fixtures.TestBase): def test_column_element_no_visit(self): class MyElement(ColumnElement): _traverse_internals = [] eq_(sql_util.find_tables(MyElement(), check_columns=True), []) def test_find_tables_selectable(self): metadata = MetaData() common = Table( "common", metadata, Column("id", Integer, primary_key=True), Column("data", Integer), Column("extra", String(45)), ) subset_select = select([common.c.id, common.c.data]).alias() eq_(sql_util.find_tables(subset_select), [common])