On 02/14/2017 09:53 AM, Manuel Vázquez Acosta wrote:
Hi,

I'm assessing how to use SA within another project that uses psycopg2
and maintains it's connection pool and the like.

I have the following code:

    @property
    def table(self):
        from sqlalchemy import create_engine
        from sqlalchemy.schema import Table
        table = self.meta.tables.get(self.obj._table, None)
        if table is None:
            global _engine
            if _engine is None:
                _engine = create_engine(
                    create_dsn(self.obj),
                    strategy='mock',
                    executor=self.execute
                )
            table = Table(self.obj._table, self.meta, autoload=True,
                          autoload_with=_engine)
        return table

    def execute(self, sql, *multiparams, **params):
        print(sql, multiparams, params)

But when I access the `.table` property of this object I get an error:

   AttributeError: 'MockConnection' object has no attribute 'run_callable'

I'm using SQLAlchemy 1.1.5.  Is this a bug or the 'executor' API has
changed?

it's sort of a bug but you're attempting to do a thing that in any case is not possible. The "mock" execution strategy does not support operations that require result sets, because it isn't actually querying a database. If we add the "run_callable" method onto the MockConnection (the bug), you'll get an error soon after that where the autoload process cannot access a result set.

If you'd like to intercept real SQL statements as they are emitted, the quickest way is to use the before_cursor_execute() event listener:

http://docs.sqlalchemy.org/en/latest/core/events.html?highlight=before_cursor_execute#sqlalchemy.events.ConnectionEvents.before_cursor_execute






Best regards,
Manuel.

--
SQLAlchemy -
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and
Verifiable Example. See http://stackoverflow.com/help/mcve for a full
description.
---
You received this message because you are subscribed to the Google
Groups "sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send
an email to sqlalchemy+unsubscr...@googlegroups.com
<mailto:sqlalchemy+unsubscr...@googlegroups.com>.
To post to this group, send email to sqlalchemy@googlegroups.com
<mailto:sqlalchemy@googlegroups.com>.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

--
SQLAlchemy - The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- You received this message because you are subscribed to the Google Groups "sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to