0

0

Django怎么接数据库_settings中DATABASES配置MySQL/PostgreSQL

P粉602998670

P粉602998670

发布时间:2026-03-19 10:18:01

|

616人浏览过

|

来源于php中文网

原创

最常见的失败是PORT写成字符串或漏掉ENGINE;ENGINE必须为'django.db.backends.mysql',PORT必须是整数3306;本地HOST用'127.0.0.1'而非'localhost';PyMySQL需在__init__.py中patch;环境变量缺省值勿设空字符串。

django怎么接数据库_settings中databases配置mysql/postgresql

MySQL 连接配置写错端口或引擎会直接报 OperationalError

最常见的失败不是密码错,而是 PORT 写成字符串(比如 '3306')或者漏掉 ENGINE。Django 默认用 django.db.backends.sqlite3,不显式指定 MySQL 引擎就会连 SQLite,但表结构建不起来,后面 migrate 时才爆 OperationalError: (1045, "Access denied...")(2003, "Can't connect to MySQL server")

  • ENGINE 必须是 'django.db.backends.mysql'(注意不是 mysqldbpymysql
  • PORT 必须是整数,3306,不能加引号
  • 如果用 mysqlclient(推荐),确保已装: pip install mysqlclient;用 PyMySQL 需在 __init__.py 中 patch(见下一条)
  • 本地开发常用 HOST'127.0.0.1',别写 'localhost' —— MySQL 对这两者解析不同,'localhost' 会走 socket,容易连不上

PostgreSQL 的 NAMEUSER 必须真实存在,且权限要开

Django 不创建数据库、不建用户,它只连。所以 NAME 填的是库名,不是文件路径;USER 是 PostgreSQL 里的角色(role),不是系统用户名。连不上时大概率是:psql -U postgres 能进,但 psql -U your_user -d your_dbpassword authentication faileddatabase "xxx" does not exist

  • NAME 必须是已用 createdb your_db 创建好的库名
  • USER 必须已用 createuser -P your_user 创建,并赋予 CREATEDB 权限(migrate 需要)
  • PASSWORD 是该用户的密码,不是系统密码,也不是 pg_hba.conf 里设的认证方式
  • 默认 PORT5432,别漏;HOST 如果是本地,填 '127.0.0.1''localhost' 更稳

用 PyMySQL 代替 mysqlclient 时,必须在 __init__.py 里 import 并 monkey patch

因为 mysqlclient 是 C 扩展,PyMySQL 是纯 Python 实现,Django 默认不认识它。不 patch 就算 ENGINE 写对了,启动时也会报 ModuleNotFoundError: No module named 'MySQLdb' —— Django 底层还是在找 MySQLdb

像素蛋糕PixCake
像素蛋糕PixCake

像素级AI图像精修软件

下载
  • 在项目根目录的 __init__.py(不是 settings.py)中加两行:
  • import pymysql
    pymysql.install_as_MySQLdb()
  • 确保已装 pymysqlpip install PyMySQL
  • 仅限开发或轻量场景用 PyMySQL;生产环境强烈建议用 mysqlclient,性能和稳定性差一截

DATABASES 里混用环境变量时,os.getenv() 缺省值别设空字符串

很多人用 os.getenv('DB_NAME', ''),结果 NAME 变成空串,Django 会试图连一个叫 '' 的库,报 OperationalError: database "" does not exist。更糟的是,有些环境变量没配全,但代码没报错,直到 migrate 或 runserver 才崩。

  • os.getenv('DB_NAME') 不带默认值,让它返回 None,然后显式检查:
  • 例如:NAME = os.getenv('DB_NAME') or 'myproject_dev'
  • 密码字段尤其不能设空默认值,否则连空密码库,安全风险
  • 推荐用 django-environ 管理,但哪怕不用,也至少用 assert 卡住关键字段:assert os.getenv('DB_PASSWORD'), 'DB_PASSWORD required'
环境变量没配全、引擎写错、端口类型不对、数据库/用户实际不存在——这四类问题占了 Django 数据库连不上原因的八成。真正卡住人的往往不是语法,而是“以为配对了,其实某个字段根本没生效”。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

690

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

554

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

287

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

520

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

267

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

392

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

543

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

668

2023.08.14

bootstrap安装教程
bootstrap安装教程

本专题整合了bootstrap安装相关教程,阅读专题下面的文章了解更多详细操作教程。

22

2026.03.18

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Django 教程
Django 教程

共28课时 | 5.1万人学习

Django DRF 源码解析
Django DRF 源码解析

共21课时 | 1.5万人学习

Django参考手册
Django参考手册

共0课时 | 0.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号