У меня есть функция, которая запрашивает сервер postgres с помощью psycopg2 и возвращает обратно кадр данных pandas.
Существуют две основные проблемы, которые могут вызвать сбой функции.
1) сервер не работает - это обрабатывается исключением psycopg2.OperationalError. Что я могу использовать, чтобы пользователи знали, что они должны проверить, работает ли сервер.
2) пользователь вводит неверный запрос.
Во-вторых, мне нужна помощь. Я считаю, что это ошибка DatabaseEr. Я хочу использовать это как исключение и распечатать сообщение для пользователя, чтобы исправить его запрос.
Пример кода ниже:
conn = None
query = 'SELECT nonsense from schema1.table'
try:
conn = pyscopg2.connect(params)
df = pd.read_sql_query(query,conn)
except (psycopg2.OperationalError,psycopg2.DatabaseError) as e:
print (f'Query failed!\n\n{e})
При неправильном запросе, как указано выше, я ожидаю, что сообщение об ошибке будет "Запрос не выполнен!" а затем ошибка, которая будет показана ниже этого.
В настоящее время я просто получаю:
DatabaseError: Execution failed on query 'SELECT nonsense from schema1.table': column "nonsense" does not exist
LINE 1: SELECT nonsense from schema1.table