Как вы получаете изолированную синтаксическую ошибку SQL в SQLAlchemy - PullRequest
0 голосов
/ 10 мая 2018

Используя SQLAlchemy, я бы хотел изолировать любые синтаксические ошибки SQL. Например ..

try:
  [row for row in db.execute(text("select * from userds"), **args)]
except ProgrammingError as error:
  print(error)

Я получаю

(psycopg2.ProgrammingError) relation "userds" does not exist
LINE 1: select * from userds
                      ^
 [SQL: 'select * from userds'] (Background on this error at: http://sqlalche.me/e/f405)

А меня интересует только ..

relation "userds" does not exist

Кто-нибудь знает, возможно ли это?

1 Ответ

0 голосов
/ 10 мая 2018

Я нашел решение своего вопроса. Вы должны перехватить StatementError и распечатать атрибут orig объекта ошибки, например, так:

from sqlalchemy.exc import StatementError

try: 
 [r for r in db.execute("invalid statement")]
except StatementError as error:
 print(error.orig)

https://github.com/zzzeek/sqlalchemy/blob/699272e4dcb9aa71ebbc0d9487fb6de82d3abc2b/lib/sqlalchemy/exc.py#L280

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...