Django连接PostgreSQL时报SyntaxError: EOL while scanning string literal错误求助
Django 连接PostgreSQL时makemigrations触发SyntaxError的解决方案
你之前排查判断问题出在密码配置行的方向是对的,但触发SyntaxError的原因不是密码内容填错,是这行的字典语法书写错误,导致Python在解析settings.py文件时就抛出了语法错误,程序根本还没执行到连接数据库的环节。
核心语法错误定位
你贴的配置代码中,对应密码配置的这行存在明显语法问题:'PASSWORD: '<password>',
这里的错误是字典的键PASSWORD没有正确闭合单引号,反而把键值分隔的冒号写到了单引号内部,完全不符合Python字典的键值对书写规则。
这行的正确写法为:'PASSWORD': '<password>',
语法修正后的配置核对清单
解决直接的语法错误后,需要逐一核对以下配置项,避免后续出现数据库连接类报错:
- 所有被尖括号包裹的占位文本(
<db_name>、<db_username>、<password>等)必须替换为你本地PostgreSQL服务的真实参数,不要保留尖括号和占位标记 - 提前安装数据库驱动依赖:执行
pip install psycopg2-binary安装psycopg2,避免出现驱动缺失类的报错 - 连接参数核对:
- HOST项如果是本地运行的PostgreSQL服务,直接填写
localhost即可,不要保留占位文本db_hostname_or_ip - PORT项如果没有自定义PostgreSQL的默认端口,填写
5432即可
- HOST项如果是本地运行的PostgreSQL服务,直接填写
修正后的完整配置参考
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.postgresql', 'NAME': 'your_real_db_name', 'USER': 'your_real_db_user', 'PASSWORD': 'your_real_db_password', 'HOST': 'localhost', 'PORT': '5432', } }
分步验证技巧
改完配置后可以分阶段验证,避免一次性排查多层问题:
- 先执行
python manage.py check,如果没有抛出SyntaxError,就说明settings.py的文件解析已经正常 - 再执行
python manage.py dbshell,如果能正常进入PostgreSQL的命令行交互界面,就说明数据库连接完全正常,之后再执行makemigrations、migrate命令就不会出现配置类报错了
内容的提问来源于stack exchange,提问作者JanKoci
相关产品推荐
相关产品推荐

