ORM数据库模型

ORM模型

  • 对象关系型映射,通过类的方式进行操作数据库。
  • ORM 在执行对象操作的时候,会将对应的操作转化成原生的SQL语句进行操作。

Django

# 类继承自 models.Model

from django.db import models

# 创建数据模型,对应一张数据库中的表
class Book(models.Model):
	id = models.AutoField()
	name = models.CharField(max_length=100)
	author = models.CharField(max_length=100)
	price = models.FloatField()

# 对模型中的对象进行操作
book = Book(name="Python",author="桂树",price=89)
# save 方法保存
book.save()
# delete 方法,删除
book.delete()

映射模型到数据库中

  1. settings.py中,配置 DATABASES,做好数据库相关配置
  2. 在app中 models.py中定义好模型,模型继承自 django.db.models
  3. 将 app 添加到 settings.py 的 INSTALLED_APP中
  4. 在命令行终端,进入项目所在路径,然后执行命令 python manage.py makemigrations 生成迁移脚本文件
  5. 同样在命令行,再执行 python manage.py migrate 来将迁移脚本文件映射到数据库中

数据增删改查

from django.http import HttpResponse
from .models import Book

# 增填数据
def index(request):
	book = Book(title="python",author="lcl",price=80)
	book.save()
	return HttpResponse("success")


# 数据查询
def index(request):
	# 查询所有
	book = Book.objects.all()
	# 主键查询
	book = Book.objects.get(id=1)
	# 根据条件查询 filter 过滤
	book = Book.objects.filter(title="java")
	return HttpResponse("success")


# 修改数据
def index(request):
	book = Book.objects.get(id=5)
	book.title="php"
	book.save()
	return HttpResponse("success")

常用字段

字段字段解析
AutoField映射到数据库中是int类型,自动增长
BigAutoField类似于AutoField、范围较大
BooleanField在模型层面接收的是True/Fals
CharField在数据库层面是varchar类型,必须要指定最大的长度max_length
DateTimeField日期时间类型,不仅仅可以存储日期,还可以存储时间。映射到数据库中是datetime类型
EmailField类似于CharField。在数据库底层也是一个varchar类型
FileField用来存储文件的
ImageField用来存储图片文件的
FloatField浮点类型。映射到数据库中是float类型
IntegerField整形。值的区间是-2147483648——2147483647
BigIntegerField大整形。值的区间是-9223372036854775808——9223372036854775807。
PositiveIntegerField正整形。值的区间是0——2147483647
SmallIntegerField小整形。值的区间是-32768——32767。
PositiveSmallIntegerField正小整形。值的区间是0——32767
TextField大量的文本类型。映射到数据库中是longtext类型。
UUIDField只能存储uuid格式的字符串。uuid是一个32位的全球唯一的字符串,一般用来作为主键。
URLField类似于CharField,只不过只能用来存储url格式的字符串。并且默认的max_length是200。

Field常用参数

参数含义
null如果设置为True,映射的时候指定为空,默认为Flase
db_column这个字段在数据库中的名字。如果没有设置这个参数,那么将会使用模型中属性的名字
default默认值。可以为一个值,或者是一个函数,但是不支持lambda表达式。并且不支持列表/字典/集合等可变的数据结构
primary_key是否为主键。默认是False。
unique在表中这个字段的值是否唯一。一般是设置手机号码/邮箱等。

模型中Meta配置

  • 对于一些模型级别的配置。我们可以在模型中定义一个类,叫做Meta。然后在这个类中添加一些类属性来控制模型的作用。比如我们想要在数据库映射的时候使用自己指定的表名,而不是使用模型的名称。那么我们可以在Meta类中添加一个db_table的属性
class Book(models.Model):
    name = models.CharField(max_length=20,null=False)
    desc = models.CharField(max_length=100,name='description',db_column="description1")

    class Meta:
        db_table = 'book_model'
        ordering = ['pub_date']     # 正序
        ordering = ['-pub_date']	# 倒序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值