Django与Mysql数据库的连接
- 前言
- 一、基础配置
- 1、确保服务器安装了mysql,两条命令都要执行。安装过程中需要输入初始化密码。
- 2、配置django
- 2.1 settings.py文件
- 2.2 插入数据库表格
- 2.3 文件迁移
- 二、遇到的一些问题
前言
环境:ubuntu + mysql5.7以上+django
Django与Mysql数据库的连接教程很多且大致差不多,本文主要记录作者在实际操作中的一些问题以及Django ORM的实现原理(原理不深入讲解,只介绍大致含义)
一、基础配置
1、确保服务器安装了mysql,两条命令都要执行。安装过程中需要输入初始化密码。
本文重点介绍django的配置,mysql的默认配置以及开启远程连接可以参考mysql配置相关文章。
// 命令
sudo apt-get install mysql-server
sudo apt-get install mysql-client
2、配置django
2.1 settings.py文件
1、找到DATABASES,并进行配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',#mysql引擎
'NAME': '数据库名',
'USER': '用户名',
'PASSWORD': '密码',
'HOST': '数据库服务器的ip地址,如果在本地可以配成127.0.0.1',
'POST': 3306,
}
}
2、在settings.py文件最后加入一行代码
// An highlighted block
DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
2.2 插入数据库表格
1、在model.py 函数下插入一个表
// An highlighted block
from django.db import models
# Create your models here.
# 最后会生成一个表,表名为'你的app的名字+Bookinfo'
# 字段可以自己进行定义,后续也可以修改
class Bookinfo(models.Model):
name = models.CharField(max_length=10)
nameinfo = models.CharField(max_length=1000)
feature = models.CharField(max_length=1000)
livemethod = models.CharField(max_length=1000)
feednn = models.CharField(max_length=1000)
feedmethod = models.CharField(max_length=1000)
2、在__init__.py 文件夹下引入mysql包,因为现在虽然在django后端中已经命名了表格,但是还没有引入django所需要的mysql模块。需要在__init__.py中插入:
// An highlighted block
import pymysql
pymysql.install_as_MySQLdb()
2.3 文件迁移
在进行完上面几步之后相当于在我们的后端已经new了一个bookinfo的表格,但是这个表格目前还没有同步到mysql中,因此需要继续执行下面两个命令
1、cd 到manage.py 目录下执行:
// An highlighted block
python manage.py makemigrations
python manage.py migrate
这两句可以理解成有点像git的原理,python manage.py makemigrations这句执行结束后会返回修改的信息,举个例子:
// An highlighted block
- Create model Bookinfo
- Delete model Book_03
- Delete model Catinfo
这是我执行后的输出,可以看到我再models里面删除了两个表格,又新建了一个表格,之后执行第二句,相当于把我的修改的代码,进行git push。
执行结果:
// An highlighted block
Operations to perform:
Apply all migrations: admin, auth, contenttypes, core, sessions
Running migrations:
Applying core.0005_auto_20211119_0813... OK
表示我们的更新已经同步到了数据库上。验证一下:
| auth_group |
| auth_group_permissions |
| auth_permission |
| auth_user |
| auth_user_groups |
| auth_user_user_permissions |
| core_bookinfo | ----->已经生效,其他的是默认生成的表!!!
| django_admin_log |
| django_content_type |
| django_migrations |
| django_session
二、遇到的一些问题
1、文件迁移一直No changes detected
在进行文件迁移的时候一定要确保app所在的目录下有migrations文件夹,就相当于确定我们的代码是在git的环境下进行修改。并且migrations文件夹下也一定要有__init__文件。之前笔者就是因为不小心删掉了这个文件夹,导致一直更新失败。
如果大家不小心误删了,重新建一个文件夹和空的__init__文件就行。