部署Django项目至PythonAnywhere时PostgreSQL连接失败求助
解决PythonAnywhere部署Django连接Neon PostgreSQL的连接拒绝问题
排查与修复步骤
调整端口与SSL设置
PythonAnywhere默认拦截标准PostgreSQL端口5432的出站连接,Neon提供了SSL加密的5433端口可绕过限制。修改settings.py的数据库配置:DATABASES = { "default": { "ENGINE": "django.db.backends.postgresql_psycopg2", "NAME": "<the database>", "USER": "<User>", "PASSWORD": "<Password>", "HOST": "<Host>", "PORT": 5433, # 替换为5433 "OPTIONS": { "sslmode": "require", # 强制启用SSL连接 }, } }检查Neon的IP访问控制
确认Neon控制台的数据库访问规则是否允许PythonAnywhere的服务器IP。临时将ACL设置为0.0.0.0/0(允许所有IP)测试连接,验证后再根据PythonAnywhere的IP范围缩小权限。确保依赖库正确安装
在PythonAnywhere环境中优先安装psycopg2-binary,避免系统库依赖问题:pip install psycopg2-binary --upgrade用最简脚本验证连接
编写独立测试脚本排除Django框架的影响,直接测试数据库连接:import psycopg2 try: conn = psycopg2.connect( dbname="<the database>", user="<User>", password="<Password>", host="<Host>", port=5433, sslmode='require' ) print("数据库连接成功") conn.close() except Exception as e: print(f"连接失败原因: {str(e)}")在PythonAnywhere的终端运行该脚本,确认连接是否正常。
内容的提问来源于stack exchange,提问作者zeyad moustafa
相关产品推荐
相关产品推荐

