DjangoORM操作

浪子不回头ぞ 提交于 2019-12-02 16:25:50

目录

Django ORM

连接数据库

使用PyCharm连接数据库

如果不在django中指定要使用的数据库,那么django中默认连接sqlite的数据库 该数据库功能不是很强大,尤其是对日期类型格式的数据,不是很兼容

django连接MySQL的两步配置

  1. 在settings文件中配置

    DATABASES = {
     'default':{
         'ENGINE':'django.db.backemds.mysql',    指定使用MySQL数据库
         'NAME':'xxx',   指定MySQL中的指定库
         'USER':'root',  用户名
         'PASSWORD':'xxxxxx' 连接数据库的密码
         'HOST':'127.0.0.1'  默认地址
         'PORT':3306,    端口号
         'CHARSET':'utf8'    使用的编码格式
     }
    }
    1. 由于django默认使用的是mysqldb模块来连接数据库 但是改模块不兼容 不推荐使用告诉django使用pymysql模块连接数据库

      ###在项目名的文件夹找到__init__文件或者在自己定义的应用名文件夹下的__init__都可以指定
      import pymysql
      pymysql.install_as_MySQLdb()

Django orm使用

我们在django中使用orm时,orm并不会帮你自动创建数据库,还是需要我们手动指定一个django项目用一个数据库

ORM对象关系映射

表的创建

​ 在应用名下的models.py中书写模型类

orm中常用字段
AutoField(primary_key = True)   用于设置主键

CharField(max_length = re)  用于设置字符类型的字段,必须要有max_length参数

IntegerField()      用于设置数字类型字段

BigIntergerField()      用于设置可以存放大个的数字类型

DateField()     用于设置日期字段
    auto_now:每次修改数据时,都会更新该字段
    auto_now_add:只在创建数据的时候 才会自动将创建时间添加 后续不会自动修改
    
BooleanField(field)
    -波尔类型值
    在使用该字段存储数据的时候,你只需要传递布尔值
    在数据库中会自动变为0/1
    
TextField(Field) 文本类型,用于存放大字段

EmailField(CharField)   用于存放邮箱

FileField(Field)
-字符串,路径保存在数据库
-参数:
    upload_to = ""  上传文件保存的路径
    storage = None  存储组件,默认django.core.files.FileSystem
    
DecimalField(Field)
-10进制小数
-必须设置的参数:
    max_digits  小数总长度
    decimal_places  小数位长度

orm表创建

在应用名下的models.py中书写模型类

class User(models.Model):
    id = model.AutoField(primary_key = Ture) #为表设置主键,在django中 你可以不指定主键字段,rom会自动为你创建id的主键字段
    username = model.CharField(max_length=32) #设置username字段


***********************************数据库迁移命令**************************************
1.python.manage.py makemigrations #并不会真正操作数据 只是将记录记录到小本本上
2.python manage.py migrate #将真正的记录同步到数据库中
   # 当你第一次执行上面两条命令的时候 django会自动创建很多张表  这些表都是django默认需要用到的表
        # 你自己写的模型类所对应的表 表名有固定格式
            应用名_表名
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!