Python3.9使用pgsql访问PostgreSQL报错及轻量客户端咨询
问题一:relation "declare_report" 不存在的解决方法
1. 指定正确的连接数据库
你当前的pgsql.Connection调用未指定目标数据库名称,默认可能连接到PostgreSQL自带的postgres库,但你的declare_report表大概率在其他数据库中。修改代码添加dbname参数:
import pgsql # 替换为你实际使用的数据库名称 with pgsql.Connection(("localhost", 5432), "postgres", "password", dbname="your_target_db") as db: report_items = db.prepare('SELECT * FROM "declare_report"') print(len(report_items)) report_items.close()
2. 修正模式引用语法
如果表在public模式下,错误的"public.declare_report"会被识别为完整表名,而非public模式下的declare_report表。正确写法二选一:
- 无引号(适用于小写模式/表名):
SELECT * FROM public.declare_report - 带引号(适配大小写/特殊字符):
SELECT * FROM "public"."declare_report"
3. 验证连接参数与权限
确认postgres用户有权限访问目标数据库和declare_report表,同时核对主机、端口、密码与pgadmin中使用的完全一致。
问题二:Windows11 Python3.9 下的轻量PostgreSQL客户端推荐
以下客户端无需安装PostgreSQL本体,直接通过pip即可安装使用:
- psycopg2-binary:psycopg2官方预编译版本,无编译依赖,执行
pip install psycopg2-binary即可安装,是PostgreSQL最常用的Python客户端,完全支持CRUD,性能优异。 - pg8000:纯Python实现的客户端,遵循DBAPI 2.0标准,无需编译步骤,执行
pip install pg8000安装,体积小巧,适配轻量场景。 - asyncpg:高性能异步客户端,支持异步CRUD操作,执行
pip install asyncpg安装,适合异步编程场景,无额外依赖。
内容的提问来源于stack exchange,提问作者user2155362
相关产品推荐
相关产品推荐

