Python执行PostgreSQL关联查询提示表不存在但pgadmin可正常访问求解
问题解决方案
- Schema 搜索路径不匹配
这是最常见的原因:你在pgAdmin中查看表时,默认会加载当前用户对应schema的搜索路径,而Python数据库连接默认的search_path通常只包含publicschema,如果你的表存放在其他自定义schema下就会无法识别。
解决方法二选一:- 查询时给表名带上schema前缀,示例:
"你的schema名称"."fundadata_zip_converter_dropped_columns" - 执行查询SQL前先设置搜索路径:
cursor.execute("SET search_path TO 你的表所在schema名称, public;")
- 查询时给表名带上schema前缀,示例:
- 大小写匹配问题
PostgreSQL默认对未加双引号的标识符不区分大小写,但你建表时如果用双引号包裹了表名/字段名,就会强制保留大小写,查询时的拼写必须和建表时完全一致。请核对你代码中写的表名大小写、拼写,和pgAdmin中显示的表名完全一致,不要有多余字符、拼写错误。 - 连接配置或权限错误
- 确认Python代码中数据库连接的host、端口、数据库名,和pgAdmin使用的连接参数完全一致,避免连接错了数据库实例/库。
- 确认Python连接使用的数据库账号,有对应表的查询权限,你可以在pgAdmin中执行赋权语句:
GRANT SELECT ON fundadata_zip_converter_dropped_columns, fundadata, financial_data TO 你的Python连接用户名;
- 额外语法修正
你当前的SQL存在多余括号问题:SELECT(开头的括号会将多个字段拼接为ROW类型,不符合你取多字段的需求,删掉SELECT后的左括号、以及fundadata."postcode")里的右括号即可。另外你代码末尾多余的两行无效SQL片段记得删除,避免误执行。
内容的提问来源于stack exchange,提问作者Eri Bytyci
相关产品推荐
相关产品推荐

