我有一个函数,可以使用psycopg2查询postgres服务器,并返回一个熊猫数据框。
有两个主要问题可能会导致功能失败。
1)服务器已关闭-这由psycopg2.OperationalError异常处理。我可以用来使用户知道他们应该检查服务器是否启动。
2)用户输入了错误的查询。
第二个是我需要帮助的。我相信这是一个DatabaseError。我想以此作为例外,并向用户打印一条消息以更正其查询。
代码示例如下:
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
答案 0 :(得分:1)
您应该/可以在熊猫级别处理错误。
处理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!\n\n{e}')