使用Django连接MySql数据库

任何没有连接数据库的系统或网页,都是没有灵魂的。
相信学了基础的Django的读者们一定非常想要连接上自己的数据库,今天就写一下我自己连接数据库的过程以及遇到的那些坑 ( T^T )

项目名–myshop
app名–blog

1.使用Django连接数据库首先要了解一下什么是ORM模型

ORM的作用是在关系型数据库和业务实体对象之间进行映射,这样在操作业务对象时,就不需要再去和复杂的SQL语句打交道,只需要简单的操作对象的属性和方法。
ORM的表现方式就是编写数据模型类,这些类可以写到任何文件中,通常写在每个应用的models.py文件中,每个数据模型类都是django.db.models.Model的子类
表名组成方式:应用的名称(小写字母)+数据模型类(小写字母) 例如:blog_student

2.然后在blog下的models.py文件中添加Student类

注:这里的Student类等价于数据库中的表,类中的属性等价于表中字段
如,根据第一部的介绍,表的名称就是blog_student,该表中的字段名分别是name,xuehao,age,jianjie

from django.db import models

class Student(models.Model):
    name=models.CharField(max_length=50)
    xuehao=models.CharField(max_length=20)
    age=models.CharField(max_length=20)
    jianjie=models.TextField()

数据模型类(model)依然是Python中的类,可以在其中命名属性(变量)和方法。
每个属性(变量)对应着数据库中的一个字段,变量也被称为字段,Django会为每个数据模型类设置一个自增长的id字段并作为该表的主键,不需要再数据模型类中写出来。

字段属性类型

  1. CharField:用于保存字符串,在使用时需要指明长度
  2. TextField:和CharField一样,区别在于无上限,通常用于保存大文本
  3. DateField和DateTimeField:用于保存时间

3.修改myshop下的settings.py文件
找到DATABASES,修改

DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        # 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'myshop_2',
        'USER': 'root',
        'PASSWORD': '123456',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

注释掉的两句为原来默认的.

ENGINE :连接的数据库类型
NAME :要连接的数据库名
USER:数据库用户名
PASSWORD :数据库密码
HOST :主机地址
PORT :数据库的端口号

找到INSTALLED_APPS 添加

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',  #将app名添加到此处
]

4.使用 pip install pymysql 安装pymysql库
并在myshop下的__init .py文件中写入如下语句:

注:此处有个坑,在网上看的链接数据库,用的是mysqlclient这个库 ,但是在安装这个库时经常安装失败,所以,劝大家不要用mysqlclient,直接用pymsql.

import pymysql
pymysql.install_as_MySQLdb()

5.在终端执行数据迁移命令

python manage.py makemigrations

6.在终端执行migrate命令真正生成数据库表文件

python manage.py migrate

django 使用mysql连接池 django如何连接数据库mysql_django


如控制台输入如上信息,说明连接数据库成功。