1、定义
对象关系映射(英语:Object Relational Mapping,简称ORM),用于实现面向对象编程语言里不同类型系统的数据之间的转换.换句说,就是用面向对象的方式去操作数据库的创建表,增加、修改、删除、查询等操作
2、演示:查看ORM生成的sql语句:
A、使用QuerySet中的query属性
B、配置日志系统,将sql显示到控制台
def hello(request,a):
print(request.get_full_path())
user_list = User.objects.all()
print(user_list.query)
print(locals())
return render_to_response(‘table.html‘,locals())
输出内容:
th_user`.`id`, `auth_user`.`password`, `auth_user`.`last_login`, `auth_user`.`is_superuser`, `auth_user`.`username`, `auth_user`.`first_name`, `auth_user`.`last_name`, `au
th_user`.`email`, `auth_user`.`is_staff`, `auth_user`.`is_active`, `auth_user`.`date_joined` FROM `auth_user`
{‘a‘: ‘123‘, ‘user_list‘: [<User: admin>], ‘request‘: <WSGIRequest: GET ‘/hello/‘>}
[05/Dec/2017 20:35:07] "GET /hello/ HTTP/1.1" 200 1016
C、使用一些开发工具,django_debug_toolbar
3、ORM优缺点
1、ORM使得我们通过数据库交互变的简单易行,并且完全不用考虑该死的SQL语句,快速开发,由此而来
2、可以避免一些你搜程序猿写sql语句带来的性能和效率问题
缺点:
1、性能有所牺牲。不过现在的各种ORM框架都在尝试使用各种方法来减轻这个问题(LazyLoad,Cache),效果还是很显著的
2、对于个别复杂查询,ORM仍然力不从心。为了 解决这个问题,ORM框架一般也提供了直接原生sql的方式