Django(二)_连接数据库,创建models模型并同步到数据库

一.连接数据库

ORM,对象关系映射,用来把对象模型表示的对象映射到基于SQL的关系模型数据库结构中去。这样,我们在具体的操作实体对象的时候,就不需要再去和复杂的 SQ L 语句打交道,只需简单的操作实体对象的属性和方法。
我们通过操作Django里的models.py来实现与数据库的交互。
在这里插入图片描述

Django连接数据库的配置路径在setting.py里面
在这里插入图片描述

这里的sqllite3是Django内置的本地数据库,在实际的项目中我们肯定是要使用更具扩展性的数据库比如mysql。实际上我在做毕设的就是连接的数据库mysql:https://blog.csdn.net/qq_38175040/article/details/104867747,不过比较简陋啊,只有几张数据表^ _ ^
我这台新电脑在用msi文件装MySQL的时候老是报错,看了一下网上,好像用msi装数据库的都会报错。先不管了,就用sqllite3凑合一下吧。

一定要记得注册一下app,否则该app下的models.py文件里定义的模型与数据库无法交互
在这里插入图片描述

开始连接本地的sqlite数据库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

选择到我们当前Django项目下的sqlite3数据库
在这里插入图片描述
在这里插入图片描述
点Test Connection,要我们下个什么东西,下完之后就连接成功了。然后点击右下角的Apply,然后点OK,连接成功。
在这里插入图片描述

同步数据库
在这里插入图片描述
然后输入migrate命令,同步数据库
在这里插入图片描述

多了很多python自带的表
在这里插入图片描述

二.在models.py里创建模型并同步到数据库中

先定义好模型,(class Meta的用法可以自行了解一波)
在这里插入图片描述

from django.db import models

# Create your models here.
class Login(models.Model):
    #定义一个name字段,字符串格式,长度不超过20
    name = models.CharField(max_length=20,verbose_name='姓名')
    age = models.IntegerField(default=2)

    #内部类,用于定义本模型的一些行为特性
    class Meta:
        #指定数据库名
        db_table = 'login'

        # 获取对象列表时,对象的默认排序
        ordering = ['id',]

        # 对象名字
        verbose_name = 'Trump_baby'

然后检测各app下的models.py有没有变动并记录下来,使用命令makemigrations(不会将变动同步到数据库里,同步是migrate命令干的活),如果后面不加应用名,默认检查所有的app(变动记录会放到app下的migrations的文件夹里xxxxinitial.py文件里)
在这里插入图片描述
models的变动记录
在这里插入图片描述
输入命令 sqlmigrate [appname] 0001 ,将models的变动记录0001initalize.py翻译为sql语句
在这里插入图片描述

再输入命令migrate,正式将model变动同步到数据库里
在这里插入图片描述
题外话,还可以用一个命令: showmigrations 来查看哪些model变动已经被同步到数据库,哪些变动没有被同步到数据库,前面顶个[x]就代表已经被同步过了,前面如果是[]就代表这个变动还没有被同步到数据库里去。
在这里插入图片描述

刷新一下数据库,多了一个数据表
在这里插入图片描述

也可以在django_migrations表里查看每个app最新一次的变动
在这里插入图片描述

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LSQ的测试日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值