Django 连接 MySQL 数据库及常见报错解决

一、终端或者数据库管理工具连接 MySQL ,并新建项目所需数据库

  1. 终端或者数据库管理工具连接 MySQL ,并新建项目所需数据库
CREATE DATABASE drf_shop CHARACTER SET utf8;

创建数据库一定要将字符编码设置为utf8,很多错误就是没正确设置编码导致的!

二、安装访问 MySQL 的 Python 模块

pip install pymysql

三、Django 相关配置

工程文件夹(settings平级的文件夹)/init.py

from pymysql import install_as_MySQLdb
install_as_MySQLdb()

settings.py 中替换默认 DATABASE 相关配置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # django 数据库后台
        'NAME': 'drf_shop',  # 连接数据库的名称
        'USER': 'root',  # 用户名
        'PASSWORD': '123456',  # 密码
        'HOST': '127.0.0.1',  # 主机
        'PORT': '3306',  # 端口
    }
}

至此,就可以像使用SQLite一样使用MySQL了!

四、可能会遇到的报错

报错1: django.core.exceptions.ImproperlyConfigured: mysqlclient 1.x.xx or newer is required; you have 0.x.x.

raise ImproperlyConfigured('mysqlclient 1.x.xx or newer is required; you have %s.' % Database.__version__)

django.core.exceptions.ImproperlyConfigured: mysqlclient 1.x.xx or newer is required; you have 0.x.x.

这里 xx 表示版本,报错版本可能不同但解决方法时一样的

解决方法:

/Python37(python安装目录)/Lib/site-packages/django/db/backends/mysql/base.py,注释掉以下内容:

#if version < (1, 3, 13):
#		raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__)

报错2:AttributeError: ‘str’ object has no attribute ‘decode’

报错内容:

File "xx\Python37\lib\site-packages\django\db\backends\mysql\operations.py", line 146, in last_executed_query
query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode'

解决方法:

打开
xx\Python37\lib\site-packages\django\db\backends\mysql\operations.py
把146行的 decode 修改为 encode 即可

### Django 连接 MySQL 数据库的方法 要在 Django连接 MySQL 数据库,需完成以下几个方面的配置: #### 1. 安装必要的依赖包 为了使 Django 能够与 MySQL 数据库通信,需要安装 `mysqlclient` 或其他兼容的驱动程序。推荐使用 `mysqlclient`,因为它性能更优且支持广泛。 通过以下命令安装 `mysqlclient`: ```bash pip install mysqlclient ``` 如果无法安装 `mysqlclient`,也可以考虑使用纯 Python 的替代方案如 `MySQL Connector/Python`[^4]。 --- #### 2. 配置 `settings.py` 文件中的数据库部分 在项目的 `settings.py` 文件中,找到 `DATABASES` 字典并进行如下修改: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 指定使用的数据库引擎为 MySQL 'NAME': 'study_django', # 替换为你自己的数据库名称 'USER': 'root', # 替换为你的 MySQL 用户名 'PASSWORD': 'your_password', # 替换为你的 MySQL 密码 'HOST': 'localhost', # 数据库服务器地址,默认为本地 'PORT': '3306' # 数据库端口,默认为 3306 } } ``` 上述设置指定了 Django 应该如何访问 MySQL 数据库。其中: - `'ENGINE'`: 表明使用的是 MySQL 数据库。 - `'NAME'`: 是要连接的具体数据库实例名称。 - `'USER'`, `'PASSWORD'`: 提供登录凭证以便建立连接。 - `'HOST'`, `'PORT'`: 明确指定数据库所在的主机及其监听端口号。 注意:确保已提前创建好对应的 MySQL 数据库以及拥有足够的权限来执行读写操作[^2]。 --- #### 3. 测试连接是否成功 完成以上步骤之后,运行下面这条命令验证配置无误与否: ```bash python manage.py migrate ``` 此命令会尝试依据当前模型定义向目标数据库应用迁移脚本。如果没有报错,则说明连接正常工作。 --- #### 4. 使用 ORM 执行数据查询 一旦建立了有效的链接,就可以利用 Django 自带的强大 ORM 功能轻松地处理各种 CRUD (Create, Read, Update and Delete) 请求而无需手动书写复杂的 SQL 句子[^1]。 例如,假设有一个名为 `Book` 的表结构对应于某个类模型,那么可以这样获取所有书籍记录列表: ```python from myapp.models import Book books = Book.objects.all() for book in books: print(book.title) ``` --- ### 总结 综上所述,Django 支持多种方式同外部存储系统交互,在实际开发过程中优先选用内置机制简化流程的同时也保留灵活性应对特殊需求场景下的自定义调整可能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值