django中用orm代替mysql的增删改查

前言

ORM虽然提高了开发效率,并且降低了数据操作与代码之间的耦合,但是有利就有弊
优点:

  • 实现了代码与数据操作的解耦合
  • 不需自己写原生sql, 提高开发效率
  • 防止SQL注入, 通过对象操作的方式,默认就是防止sql注入的。

缺点:

  • 牺牲性能, 对象到原生SQL势必会有转换消耗,对性能有一定的影响
  • 复杂语句力不从心, 一些复杂的sql语句,用orm对象操作的方式很难实现,就还得用原生sql

讲Django为什么要用ORM?
因为Django的models基于架构ORM实现的。

方法一:临时存在一个实例化对象中,要想数据库生效,必须执行save()函数

from app01 import models
new_obj = models.Account(
	id = 2,
	name = 'admin',
	bday = '1928-10-01',
	tags = '美丽的一天,不是吗?'
)
new_obj.save()

方法二:直接增加
下方的ret有返回值,ret 是创建的新的记录的model对象

ret = models.Account.objects.create(
	id = 5,
	name = 'root',
	bday = '1969-10-01',
	tags = '哇哦,time.time()还没出现嘞'
)

批量增加语句bulk_create

from app01 import models
obj_list = []
for i in range(20):
	obj = models.Book(
		title=f'活着{i}',
		price=20+i,
		publish_date=f'2018-03-{i+1}',
		publish='yh出版社'
		)
		obj_list.append(obj)
models.Book.objects.bulk_create(obj_list) # 批量创建


# 方法一
obj = models.Account.objects.get(id=1).delete()


# 方法二
obj = models.Account.objects.get(id=1)
obj.delete()


# 方法一
models.Account.objects.get(id=2).update(name='tomcat')

# 方法二
obj = models.Account.objects.get(id=2)
obj.name='tomcat'
obj.save()

a = models.Account.objects.all()
print(type(a))
print(a.values)
b = models.Account.objects.get(id=1)
print(b)

结果
因为我只有四个数据,所以a.values只有四个

<class 'django.db.models.query.QuerySet'>
<bound method QuerySet.values of <QuerySet [<Account: Account object>, <Account: Account object>, <Account: Account object>, <Account: Account object>]>>
Account object

如果想看更详细的内容,请点击这里
当然增删改查的方法不只这些,通过filter也可以实现,不要那么死板,想想其它可能性

简单查询:filter()  -- 结果是queryset类型的数据里面是一个个的model对象,类似于列表
models.UserInfo.objects.filter(id=7).delete()  
#queryset对象调用
models.UserInfo.objects.filter(id=7)[0].delete()  
#model对象调用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值