Django与Mysql数据库的连接

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__文件就行。

你可能感兴趣的