簡單的說,orm是通過使用描述物件和資料庫之間對映的元資料,將程式中的物件自動持久化到關聯式資料庫中。
orm在業務邏輯層和資料庫層之間充當了橋梁的作用。
讓我們從o/r開始。字母o起源於"物件"(object),而r則來自於"關係"(relational)。
幾乎所有的軟體開發過程中都會涉及到物件和關聯式資料庫。在使用者層面和業務邏輯層面,我們是物件導向的。當物件的資訊發生變化的時候,我們就需要把物件的資訊儲存在關聯式資料庫中。
按照之前的方式來進行開發就會出現程式設計師會在自己的業務邏輯**中夾雜很多sql語句用來增加、讀取、修改、刪除相關資料,而這些**通常都是重複的。
orm解決的主要問題是物件和關係的對映。它通常把乙個類和乙個表一一對應,類的每個例項對應表中的一條記錄,類的每個屬性對應表中的每個字段。
orm提供了對資料庫的對映,不用直接編寫sql**,只需像操作物件一樣從資料庫運算元據。
讓軟體開發人員專注於業務邏輯的處理,提高了開發效率。
orm的缺點是會在一定程度上犧牲程式的執行效率。
orm用多了sql語句就不會寫了,關聯式資料庫相關技能退化…
orm只是一種工具,工具確實能解決一些重複,簡單的勞動。這是不可否認的。
但我們不能指望某個工具能一勞永逸地解決所有問題,一些特殊問題還是需要特殊處理的。
但是在整個軟體開發過程中需要特殊處理的情況應該都是很少的,否則所謂的工具也就失去了它存在的意義。
autofield:
int自增列,必須填入引數 primary_key=true。當model中如果沒有自增列,則自動會建立乙個列名為id的列。
integerfield:
乙個整數型別,範圍在 -2147483648 to 2147483647
charfield:
字元型別,必須提供max_length引數, max_length表示字元長度。
datefield:
日期字段,日期格式 yyyy-mm-dd,相當於python中的datetime.date()例項。
datetimefield:
日期時間字段,格式 yyyy-mm-dd hh:mm[:ss[.uuuuuu]][tz],相當於python中的datetime.datetime()例項。
null:
用於表示某個字段可以為空。
unique:
如果設定為unique=true 則該字段在此表中必須是唯一的 。
db_index:
如果db_index=true 則代表著為此字段設定資料庫索引。
default:
為該字段設定預設值。
auto_now_add:
配置auto_now_add=true,建立資料記錄的時候會把當前時間新增到資料庫;
auto_now:
配置上auto_now=true,每次更新資料記錄的時候會更新該欄位。
Django的ORM實現資料庫事務操作
在django中實現資料庫的事務操作 在學習mysql資料庫時,mysql資料庫是支援原子操作的.什麼是資料庫的原子操作呢?打個比方,乙個消費者在乙個商戶裡刷信用卡消費.交易正常時,銀行在消費者的賬戶裡減去相應的款項,在商戶的帳戶加上相應的款項.但是如果銀行從消費者的賬戶裡扣完錢之後,還未在商戶的帳...
Flask資料庫操作ORM隨筆 DB URL
貼 class person object name 111 age 18 country person類 資料庫中的一張表 person屬性 資料庫中的一張表的字段 person類的乙個物件 資料庫中表的一天資料 模型 orm 資料庫 from sqlalchemy import create e...
Django資料庫操作API
資料庫操作api 型別描述 exact 精確匹配 polls.get object id exact 14 iexact 忽略大小寫的精確匹配 polls.objects.filter slug iexact foo 匹配 foo,foo,foo,等等.contains 大小寫敏感的內容包含測試 p...