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

问题描述 投票:2回答:1

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

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

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
python pandas psycopg2
1个回答
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}')
© www.soinside.com 2019 - 2024. All rights reserved.