欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Django连接到Mysql

程序员文章站 2022-07-09 19:51:29
...

和前面介绍过的一样,创建一个django项目,下面只介绍不一样的地方
1,在setting.py 文件里进行如下配置:

'ENGINE': 'django.db.backends.mysql',
        'USER': 'root',
        'HOST': 'localhost',
        'PASSWORD': '123456',
        'NAME': 'orm',
        'PORT': 3306,

Django连接到Mysql
这里需要注意,NAME 的值为 数据库表的名字,必须对应起来,
2. 在myPro 的init.py 文件里,进行如下配置
Django连接到Mysql
3 在 myApp 的 models.py 文件里 进行如下配置,其中各值表示数据库中的字段:

from django.db import models

# Create your models here.
class Person(models.Model):
    # AutoField 设置自动增加

    # 设置是否为主键
    uid = models.AutoField(primary_key=True)

    # 设置字段是否可以空
    uname = models.CharField(max_length=1000, null=True)

    uage = models.IntegerField(null=True)

    # 设置字段类型为Bool类型
    usex = models.NullBooleanField(null=True)

Django连接到Mysql
4 首先在命令行中输入两行代码, 表示迁移文件

python manage.py makemigrations
python manage.py migrate

需要注意,如果以前数据库也有相同的表,请先删除,不然会报错 ,错误截图如下
Django连接到Mysql
5, 在views.py 文件里,进行如下配置:

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
from .models import Person


def index(request):
    first = Person(uname='张三', uage=17, usex=True)
    first.save()

6, 打开Mysql, 新建一个表, 名字必须和刚才settings 里设置的一样,设置utf-8 格式
Django连接到Mysql
7,运行程序,刷新数据库,可以看到,刚才在views 文件里写入的字段已经写进数据库
要是多刷新页面几次,相同的数据都会写进数据库
Django连接到Mysql

下面介绍一些稍微高级的用法

 # 方法二: 写入
    first = Person.objects.create(uname='李四', uage=17, usex=True)

    # 方法三: 写入
    first = Person()
    first.uname = '小美'
    first.uage = 21
    first.usex = True
    first.save()

    # 方法四: 如果不存在,则创建, 如果存在,则获取
    # first = Person.objects.get_or_create(
    #     uname="王五",
    #     uage=19,
    #     usex=True
    # )

    # all = Person.objects.all()
    # return render(request, 'index.html', {'all': all})

    # 查询
    # 找到的结果是一个容器,里面可能有多个值,也可能没有值
    # 如果没有值,程序也不会报错
    first = Person.objects.filter(uname='小美')[0]

    # 修改
    first.uname = '太美'
    # 删除
    Person.objects.filter(uname='王五')[0].delete()

    return render(request, 'index.html', {'find': first})