1. 程式人生 > >Django學習--ORM機制詳解

Django學習--ORM機制詳解

AR 面對對象 default img als width sql pos 學習

1.定義:對象關系映射(Object Relational Mapping,簡稱ORM),用於實現面向對象編程語言裏不同類型系統的數據之間的轉換。換句話說,就是用面對對象的方式去操作數據庫的創建表,增,刪,改,查等操作。類名對應------》數據庫中的表名

類屬性對應---------》數據庫裏的字段

類實例對應---------》數據庫表裏的一行數據


2.演示:查看ORM生成sql語句 1)使用QuerySet中的query屬性技術分享圖片
2)配置日誌系統,將sql顯示到控制臺
只需在settings.py中配置如下logging即可
LOGGING = {
    ‘version‘: 1,
    ‘disable_existing_loggers‘: False,
    ‘handlers‘: {
        ‘console‘:{
            ‘level‘:‘DEBUG‘,
            ‘class‘:‘logging.StreamHandler‘,
        },
    },
    ‘loggers‘: {
        ‘django.db.backends‘: {
            ‘handlers‘: [‘console‘],
            ‘propagate‘: True,
            ‘level‘:‘DEBUG‘,
        },
    }
}
1
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_toolbar
3.ORM優缺點: 優點:1)是的我們的通用數據庫交互變得簡單易行,並且完全不用考慮該死的SQL語句,快速開發,由此而來。同時也可以避免一些新手程序猿寫sql語句帶來的性能和效率問題。 2)Django的orm操作本質上會根據對接的數據庫引擎,翻譯成對應的sql語句;所有使用Django開發的項目無需關心程序底層使用的是MySQL、Oracle、sqlite....,如果數據庫遷移,只需要更換Django的數據庫引擎即可
缺點:1)性能有所犧牲,不過現在的各種ORM框架都在嘗試使用各種方法來減輕這個問題(LazyLoad,Cache),效果還是很顯著。 2)對於個別復雜查詢,ORM仍然力不從心,為解決這個問題,ORM框架一般也提供直接寫原生sql代碼。

來自為知筆記(Wiz)

Django學習--ORM機制詳解