一、ORM介紹
1.什麼是ORM
- ORM 全拼Object-Relation Mapping.
- 中文意爲 對象-關係映射.
- 在MVC/MVT設計模式中的Model模塊中都包括ORM
2.ORM優勢
(1)只需要面向對象編程, 不需要面向數據庫編寫代碼.
- 對數據庫的操作都轉化成對類屬性和方法的操作.
- 不用編寫各種數據庫的sql語句.
(2)實現了數據模型與數據庫的解耦, 屏蔽了不同數據庫操作上的差異.
- 不在關注用的是mysql、oracle...等.
- 通過簡單的配置就可以輕鬆更換數據庫, 而不需要修改代碼.
3.ORM劣勢
- 相比較直接使用SQL語句操作數據庫,有性能損失.
- 根據對象的操作轉換成SQL語句,根據查詢的結果轉化成對象, 在映射過程中有性能損失.
4.ORM和數據庫關係:
- 在Django中model是你數據的單一、明確的信息來源。它包含了你存儲的數據的重要字段和行爲。通常,一個模型(model)映射到一個數據庫表.
基本情況:
- 每個模型都是一個Python類,它必須繼承models.Model類
django中遵循 Code Frist 的原則,即:先創建類,根據代碼中定義的類來自動生成數據庫表。
模型的每個屬性都代表一個數據庫字段。
綜上所述,Django爲您提供了一個自動生成的數據庫訪問API。
對象-關係映射
二、創建一個簡單的表
1 選擇數據庫類型
- Django默認自帶sqllite的數據庫驅動,默認使用sqllite的數據庫,可在project文件下的settings.py中修改配置
A)sqllte配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
B)mysql配置
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'HttpRunner', # 新建數據庫名,創建的表都在這下面
'USER': 'root', # 數據庫登錄名
'PASSWORD': 'Hst888888', # 數據庫登錄密碼
'HOST': '192.168.91.45', # 數據庫所在服務器ip地址
'PORT': '3306', # 監聽端口 默認3306即可
}
}
C)注意事項
django默認導入的驅動是MySQLdb模塊【適用於python2】
python3需要的驅動是pymysql,我們需要在項目名文件下的init_.py(settings.py同級的文件)中添加如下代碼:
import pymysql
pymysql.install_as_Mysqldb()
以上代碼就是告訴python使用pymysql,不要使用MySQLdb
2 註冊應用
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01',#註冊APP,上面都是默認值
]
3 創建類
在app01/models.py 中寫下以下代碼:
from django.db import models
#在數據庫中創建表名爲:app01_userinfo
#Django會自動將應用名稱添加在表前面
class UserInfo(models.Model):#創建的類必須繼承models.Model
#當model中如果沒有自增列,則自動會創建一個列名爲id的主鍵
username=models.CharField(max_length=32)
password=models.CharField(max_length=32)
4 生成數據表
完成以上操作,接下來就是根據models中的類在數據庫中生成對應的表
命令行窗口切換到項目根目錄執行以下操作:
python manage.py makemigrations #在app01/migrations下會生成數據遷移腳本
python manage.py migrate #應用到db生成數據表
到這一步一個簡單的數據庫就創建完成了