Python代码中Database_url未设置:执行后持续提示“DATABASE_URL not set”
解决"DATABASE_URL not set"错误的方案
我来帮你一步步排查和解决这个数据库配置的报错问题:
1. 先处理URL中的特殊字符编码
你的数据库密码里包含*这个特殊字符,在URL格式中这类字符需要进行URL编码才能被正确解析。*对应的URL编码是%2A,所以你需要把数据库URL修改为:
postgresql://postgres:Roha11%2A@localhost:5432/postgres
2. 调整dj_database_url的调用逻辑
dj_database_url.config()方法会优先读取系统环境变量中的DATABASE_URL,只有当环境变量不存在时才会使用你传入的default参数。如果环境变量里存在无效的DATABASE_URL值,就会触发报错。你可以改用parse方法直接解析URL,绕开环境变量的干扰:
!pip install ipython-sql %load_ext sql !pip install psycopg2 import dj_database_url import psycopg2 # 直接解析数据库URL,不依赖环境变量 DATABASE_URL = { 'default': dj_database_url.parse('postgresql://postgres:Roha11%2A@localhost:5432/postgres') }
3. 验证基础数据库连接是否正常
为了排除数据库服务本身的问题,你可以先跳过dj_database_url,直接用psycopg2测试连接:
import psycopg2 try: # 直接传入数据库参数 conn = psycopg2.connect( dbname='postgres', user='postgres', password='Roha11*', host='localhost', port='5432' ) print("数据库连接成功!") conn.close() except Exception as e: print(f"连接失败,错误信息:{str(e)}")
如果这段代码报错,说明问题出在数据库服务(比如PostgreSQL未启动)、密码错误、端口不匹配等基础配置上,需要先解决这些问题。
4. (可选)通过环境变量设置DATABASE_URL
如果你希望通过环境变量管理数据库配置,而不是硬编码到代码里,可以这样设置:
- Windows(命令提示符):
set DATABASE_URL=postgresql://postgres:Roha11%2A@localhost:5432/postgres - Linux/macOS(终端):
export DATABASE_URL=postgresql://postgres:Roha11%2A@localhost:5432/postgres
设置完成后再运行原代码,dj_database_url.config()就能正确读取到环境变量值了。
内容的提问来源于stack exchange,提问作者Roha
相关产品推荐
相关产品推荐

