diff --git a/sqlalchemy_utils/functions/render.py b/sqlalchemy_utils/functions/render.py index bf3be1e..b6c6054 100644 --- a/sqlalchemy_utils/functions/render.py +++ b/sqlalchemy_utils/functions/render.py @@ -58,7 +58,7 @@ def render_statement(statement, bind=None): if isinstance(statement, sa.orm.query.Query): if bind is None: - bind = statement.session.get_bind(statement._mapper_zero_or_none()) + bind = statement.session.get_bind(statement._mapper_zero()) statement = statement.statement diff --git a/tests/functions/test_render.py b/tests/functions/test_render.py index 13b2a38..2927617 100644 --- a/tests/functions/test_render.py +++ b/tests/functions/test_render.py @@ -17,7 +17,7 @@ class TestRender(TestCase): self.User = User - def test_render_statement_query(self): + def test_render_orm_query(self): query = self.session.query(self.User).filter_by(id=3) text = render_statement(query) @@ -33,6 +33,12 @@ class TestRender(TestCase): assert 'FROM user' in text assert 'WHERE user.id = 3' in text + def test_render_statement_without_mapper(self): + statement = sa.select([sa.text('1')]) + text = render_statement(statement, bind=self.session.bind) + + assert 'SELECT 1' in text + def test_render_ddl(self): expression = 'self.User.__table__.create(engine)' stream = render_expression(expression, self.engine)