Personally, I would handle the check like this:

ERRORS_UNDEFINED_TABLE = (psycopg2.errors.UndefinedTable, )

try: 
    res = conn.execute(stmt) 
except sa.exc.ProgrammingError as err: 
    if isinstance(err.orig, ERRORS_UNDEFINED_TABLE): 
        print('Table does not exist')
    raise


This would allow you to update the `ERRORS_UNDEFINED_TABLE` tuple in a 
central place, and allow you to more easily catch this situation in other 
databases if needed.  I've used this technique in a few projects that are 
built for postgres, but support mysql and use sqlite for some tests.


On Wednesday, December 4, 2019 at 5:52:15 PM UTC-5, Zsolt Ero wrote:
>
> Thanks. So is the following code correct for psycopg2 specific scenario? 
>
> try: 
>     res = conn.execute(stmt) 
> except sa.exc.ProgrammingError as err: 
>     if isinstance(err.orig, psycopg2.errors.UndefinedTable): 
>         print('Table does not exist') 
>     else: 
>         raise err 
>

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/f936b2c1-bdcf-4372-8943-00a31615d70a%40googlegroups.com.

Reply via email to