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.