Django学习之路——Django模型

一、连接数据库

1、安装mysql
2、创建数据库

create database mydb default charset=utf8

3、在项目的settings.py文件中找到DATABASES 配置项(下图位置)
在这里插入图片描述
将内容修改为:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 数据库引擎
        'NAME': 'mydb',  # 数据库名称
        'HOST': '127.0.0.1',  # 数据库地址,本机ip地址
        'POST': 3306,  # 端口
        'USER': 'root',  # 数据库用户名
        'PASSWORD': '123456',  # 数据库密码
    }
}

4、Django使用pymysql模块连接mysgl数据库
(在与 settings.py 同级目录下的 init.py 中引入模块和进行配置)

import pymysql
pymysql.install_as_MySQLdb()

二、定义模型

1、Django 规定,如果要使用模型,必须要创建一个 app。如果没有可以在命令行输入django-admin.py startapp AppName来创建APP
2、打开app下的models.py 文件,添加以下内容

from django.db import models
class Test(models.Model):
    name = models.CharField(max_length=20)

注:上边的类名代表了数据库名
类里面的字段name代表了数据表中的字段
数据类型CharField(相当于varchar)
max_length 参数代表限定长度

3、在 settings.py 中找到INSTALLED_APPS这一项,添加app名称
在这里插入图片描述
4、在命令行中运行
python manage.py migrate # 创建表结构
在这里插入图片描述
python manage.py makemigrations app_text2 # 让 Django 知道我们在我们的模型有一些变更
在这里插入图片描述
python3 manage.py migrate app_text2 # 创建表结构
在这里插入图片描述
常见的报错:
Access denied for user ‘root’@‘localhost’(using password:YES);

解决方法:
1、打开MySQL目录下的my.ini文件,在文件的最后添加一行“skip-grant-tables”,保存并关闭文件。
2、在cmd(用管理员运行cmd)中用命令(net stop mysql/net start mysql)重启mysgl
3、通过命令行进入MySQL的BIN目录,输入“mysql -u root -p”,回车即可进入数据库。
4、执行“use mysql;”,使用mysql数据库。
5、执行“ select * from user where user=‘root’;“你会看到很多乱码,其实不是乱码,这是mysql用户数据库,如下图:
在这里插入图片描述
7、执行“update user set authentication_string=PASSWORD(“123456”) where user=‘root’;”(修改root的密码)
8、打开MySQL目录下的my.ini文件,删除最后一行的“skip-grant-tables”,保存并关闭文件。
9、再重启mysql服务
10、重启pytharm

三、数据库操作

1、修改 urls.py

from django.contrib import admin
from django_Text2 import testdb
urlpatterns = [
    path('admin/', admin.site.urls),
    path('testdb/', testdb.testdb)
]

2、创建testdb.py 文件
3、在test.py中添加以下内容,添加数据需要先创建对象,然后再执行 save 函数,相当于SQL中的INSERT

from django.http import HttpResponse
from app_text2.models import Test
def testdb(request):
    test1 = Test(name='mydb')
    test1.save()
    return HttpResponse("<p>数据添加成功</p>")

4、运行,访问访问 http://127.0.0.1:8000/testdb
在这里插入图片描述
5、获取数据

from django.http import HttpResponse
from app_text2.models import Test
def testdb(request):
    # 初始化
    response = ""
    response1 = ""
    # 通过objects这个模型管理器的all()获得所有数据行,相当于SQL中的SELECT * FROM
    list = Test.objects.all()

    # filter相当于SQL中的WHERE,可设置条件过滤结果
    response2 = Test.objects.filter(id=1)

    # 获取单个对象
    response3 = Test.objects.get(id=1)

    # 限制返回的数据,相当于 SQL 中的 OFFSET 0 LIMIT 2;
    Test.objects.order_by('name')[0:2]

    # 数据排序
    Test.objects.order_by("id")

    # 上面的方法可以连锁使用
    Test.objects.filter(name="mydb").order_by("id")

    # 输出所有数据
    for var in list:
        response1 += var.name + " "
    response = response1
    return HttpResponse("<p>"+ response + "</p>")

6、更新数据(修改数据可以使用 save() 或 update()。)

from django.http import HttpResponse
from app_text2.models import Test
def testdb(request):
    # 修改其中一个id=1的name字段,再save,相当于SQL中的UPDATE
    test1 = Test.objects.get(id=1)
    test1.name = 'Google'
    test1.save()

    # 另外一种方式
    # Test.objects.filter(id=1).update(name='Google')

    # 修改所有的列
    # Test.objects.all().update(name='Google')

    return HttpResponse("<p>修改成功</p>")

7、删除数据(删除数据库中的对象只需调用该对象的delete()方法即可:)

from django.http import HttpResponse
from app_text2.models import Test
def testdb(request):
    # 删除id=1的数据
    test1 = Test.objects.get(id=1)
    test1.delete()

    # 另外一种方式
    # Test.objects.filter(id=1).delete()

    # 删除所有数据
    # Test.objects.all().delete()

    return HttpResponse("<p>删除成功</p>")
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值