1. 程式人生 > >ORM機制簡介

ORM機制簡介

password 轉換 body 數據庫 tab bar cts 修改 turn

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的方式

ORM機制簡介