使用 psycopg2 和 pandas 处理不正确查询产生的错误



我有一个函数,它使用 psycopg2 查询 postgres 服务器并返回一个 pandas 数据帧。

有两个主要问题可能导致函数失败。

1)服务器关闭 - 这由psycopg2处理。操作错误异常。我可以用来让用户知道他们应该检查服务器是否已启动。

2)用户输入错误的查询。

第二个是我需要帮助的。我相信这是一个数据库错误。我想将此用作例外,并向用户打印一条消息以更正他们的查询。

代码示例如下:

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!nn{e})

对于上述不正确的查询,我希望错误消息是"查询失败!",然后错误显示在下面。

目前我只是得到:

DatabaseError: Execution failed on query 'SELECT nonsense from schema1.table': column "nonsense" does not exist
LINE 1: SELECT nonsense from schema1.table

你应该/可以在熊猫级别处理错误。

处理pandas.io.sql.DatabaseError对我有用:

from pandas.io.sql import DatabaseError 
try:
# ...
df = pd.read_sql_query(query, conn)
except DatabaseError as e:
print (f'Query failed!nn{e}')

最新更新