Django學習--ORM機制詳解
阿新 • • 發佈:2018-06-24
AR 面對對象 default img als width sql pos 學習 1.定義:對象關系映射(Object Relational Mapping,簡稱ORM),用於實現面向對象編程語言裏不同類型系統的數據之間的轉換。換句話說,就是用面對對象的方式去操作數據庫的創建表,增,刪,改,查等操作。類名對應------》數據庫中的表名
2.演示:查看ORM生成sql語句 1)使用QuerySet中的query屬性
2)配置日誌系統,將sql顯示到控制臺
只需在settings.py中配置如下logging即可
3.ORM優缺點: 優點:1)是的我們的通用數據庫交互變得簡單易行,並且完全不用考慮該死的SQL語句,快速開發,由此而來。同時也可以避免一些新手程序猿寫sql語句帶來的性能和效率問題。 2)Django的orm操作本質上會根據對接的數據庫引擎,翻譯成對應的sql語句;所有使用Django開發的項目無需關心程序底層使用的是MySQL、Oracle、sqlite....,如果數據庫遷移,只需要更換Django的數據庫引擎即可
缺點:1)性能有所犧牲,不過現在的各種ORM框架都在嘗試使用各種方法來減輕這個問題(LazyLoad,Cache),效果還是很顯著。 2)對於個別復雜查詢,ORM仍然力不從心,為解決這個問題,ORM框架一般也提供直接寫原生sql代碼。
來自為知筆記(Wiz)
類屬性對應---------》數據庫裏的字段
類實例對應---------》數據庫表裏的一行數據
2.演示:查看ORM生成sql語句 1)使用QuerySet中的query屬性
2)配置日誌系統,將sql顯示到控制臺
只需在settings.py中配置如下logging即可
1LOGGING = { ‘version‘: 1, ‘disable_existing_loggers‘: False, ‘handlers‘: { ‘console‘:{ ‘level‘:‘DEBUG‘, ‘class‘:‘logging.StreamHandler‘, }, }, ‘loggers‘: { ‘django.db.backends‘: { ‘handlers‘: [‘console‘], ‘propagate‘: True, ‘level‘:‘DEBUG‘, }, } }
LOGGING = {
2 ‘version‘: 1,
3 ‘disable_existing_loggers‘: False,
4 ‘handlers‘: {
5 ‘console‘:{
6 ‘level‘:‘DEBUG‘,
7 ‘class‘:‘logging.StreamHandler‘,
8 },
9 },
10 ‘loggers‘: {
11 ‘django.db.backends‘: {
12 ‘handlers‘: [‘console‘],
13 ‘propagate‘ : True,
14 ‘level‘:‘DEBUG‘,
15 },
16 }
17}
3)使用一些開發工具:如django_debug_toolbar3.ORM優缺點: 優點:1)是的我們的通用數據庫交互變得簡單易行,並且完全不用考慮該死的SQL語句,快速開發,由此而來。同時也可以避免一些新手程序猿寫sql語句帶來的性能和效率問題。 2)Django的orm操作本質上會根據對接的數據庫引擎,翻譯成對應的sql語句;所有使用Django開發的項目無需關心程序底層使用的是MySQL、Oracle、sqlite....,如果數據庫遷移,只需要更換Django的數據庫引擎即可
缺點:1)性能有所犧牲,不過現在的各種ORM框架都在嘗試使用各種方法來減輕這個問題(LazyLoad,Cache),效果還是很顯著。 2)對於個別復雜查詢,ORM仍然力不從心,為解決這個問題,ORM框架一般也提供直接寫原生sql代碼。
來自為知筆記(Wiz)
Django學習--ORM機制詳解