Django学习笔记——ORM模型

ORM介绍

全称Object Relational Mapping,中文名叫对象关系映射,通过ORM可以通过类去操作数据库,而不用使用原生SQL语句。通过把表映射成类,把字段映射成属性,最终还是会转化为原生SQL语句。

Navicat与MySql8.0建立连接时报错

转载解决办法

创建和映射

  1. 在app下的models中创建models.Model的子类,添加需要的属性。
  2. 在虚拟环境下执行python manage.py makemigrations,生成迁移脚本文件。
  3. 使用python manage.py migrate将生成的迁移脚本文件映射到数据库中。

简单的增删改查

  1. 添加:创建一个要添加数据的实例,实例命.save()。

  2. 查询:
    模型名.objects.get(pk=主键值),根据主键获取一条信息。
    模型名.objects.filter(筛选条件),选取满足所有条件的信息,如果使用.first()则是查询第一个满足条件的数据。

  3. 删除:实例命.delete()。

  4. 修改数据:先查询,修改对应值,再使用.save()。

模型常用字段

  1. AutoField:映射到数据库中是一个int类型,又自增长的性质,一般用做主键,在参数里写入primary_key=True。
  2. BigAutoField:64位整形,类似于AutoField。
  3. BooleanField:在模型层面接受的是True/False。在数据库层面是tinyint类型。如果没有指定默认值,默认值是None。
  4. CharField:在数据库层面是varchar,在python层面就是普通的字符串,定义时必须指定最大长度,也就是传入参数max_length。字符长度超过254个建议使用TextField。
  5. DateField:在python中是datetime.date类型,可记录年月日。映射到数据库中是date类型。auto_now=True参数保存当前时间;auto_now_add参数,记录数据被第一次添加的时间。
  6. DateTimeField:类似于DateField,但可以存储时间,也可使用上述两个参数。
  7. TimeField:时间类型,在数据库中是time类型,在Python中是datetime.time类型。
  8. EmailField:类似于CharField,在数据库也是varchar类型,默认最大长度是254。
  9. FloatField,IntegerField,BigIntegerField,PositiveIntegerField,SmallIntegerField,PositiveSmallIntegerField。
  10. TextField: 在数据库中是longtext,可以存储任意长度的数据。
  11. UUIDField:只能存储UUID格式的字符串,一般用作主键。
  12. URLField:类似于CharField,只能用来存储url格式的字符串,默认长度200。
  13. 选中一个字段类型,Ctrl+b,可以查看所有类型。

Field中常用的参数

  1. null:如果设置为True,Django将会在映射的时候指定是否为空,默认为False,在使用字符串型的Field时尽量不要使用这个参数。
  2. blank:标识这个字段在表单验证时是否可以为空,默认为False,null是数据库级别的,blank是表单验证级别的。
  3. db_column:可以改变映射到数据库时的名字。
  4. default:指定初始值。
  5. primary_key:是否为主键,默认为False。
  6. unique:在表中这个字段是否为唯一的,一般是设置手机号或者邮箱。

你可能感兴趣的:(django)