orm

1. ORM

定義:object relations mapping,對象關係映射。它實現了數據模型與數據庫的解耦
python

當models裏的內容發生改變時,每改變一次執行一次下邊的兩行代碼mysql

python manage.py makemigrations #只是生成一個操做記錄,相似logging日誌sql

python manage.py migrate #在數據庫中進行正正的操做,建表,刪表等數據庫

python manage.py makemigrationsdjango

python manage.py migrateapp

沒有設置時,執行鏈接Django自帶的數據庫,sqllite3翻譯

mysqldb 不支持python3.4以上版本日誌

執行包文件init文件code

django 鏈接mysql
1 settings配置文件中
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'orm02',
            'USER':'root',
            'PASSWORD':'666',
            'HOST':'127.0.0.1',
            'PORT':3306,
        }
    }
2 項目文件夾下的init文件中寫上下面內容,用pymysql替換mysqldb
    import pymysql
    pymysql.install_as_MySQLdb()

3 models文件中建立一個類

# class UserInfo(models.Model):
#     id = models.AutoField(primary_key=True)
#     name = models.CharField(max_length=10)
#     bday = models.DateField()
#     checked = models.BooleanField()
4 執行數據庫同步指令
# python manage.py makemigrations
# python manage.py migrate

5 建立記錄(實例一個對象,調用save方法)
def query(request):
    # 建立一條記錄,增

    new_obj = models.UserInfo(
        id=2,
        name='子文',
        bday='2019-09-27',
        checked=1,
    )
    new_obj.save()  #翻譯成sql語句,而後調用pymysql,發送給服務端  insert into app01_userinfo values(2,'子文','2019-09-27',1)

    return HttpResponse('xxx')

1. ORM

定義:object relations mapping,對象關係映射。它實現了數據模型與數據庫的解耦orm

每一個數據庫有本身的sql語句,不通用。

1.將對象翻譯成sql語句

2.Django內置的一個pymysql客戶端將sql語句發送給mysql服務端

3.服務端拿到sql,到磁盤裏面進行數據操做

Django默認數據庫爲sqlite3,比較雞肋,設置爲mysql數據庫修改settings配置文件

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  #Django中數據庫地址
        'NAME':'bms',           # 要鏈接的數據庫名,鏈接前先cmd建庫
        'USER':'root',        # 鏈接數據庫的用戶名
        'PASSWORD':'',        # 鏈接數據庫的密碼
        'HOST':'127.0.0.1',       # 鏈接主機,默認本級
        'PORT':3306,            #  端口 默認3306
    }
}

若有必要,能夠爲本身的項目下的 app 配置單獨的數據庫,以下代碼

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'bms',           # 要鏈接的數據庫,鏈接前須要建立好
        'USER':'root',        # 鏈接數據庫的用戶名
        'PASSWORD':'',        # 鏈接數據庫的密碼
        'HOST':'127.0.0.1',       # 鏈接主機,默認本級
        'PORT':3306            #  端口 默認3306
    },
    'app01': { #能夠爲每一個app都配置本身的數據,而且數據庫還能夠指定別的,也就是不必定就是mysql,也能夠指定sqlite等其餘的數據庫
        'ENGINE': 'django.db.backends.mysql',
        'NAME':'bms',           # 要鏈接的數據庫,鏈接前須要建立好
        'USER':'root',        # 鏈接數據庫的用戶名
        'PASSWORD':'',        # 鏈接數據庫的密碼
        'HOST':'127.0.0.1',       # 鏈接主機,默認本級
        'PORT':3306            #  端口 默認3306
    }
}

設置完後,再啓動咱們的Django項目前,咱們須要激活咱們的mysql。而後,啓動項目,會報錯:no module named MySQLdb 。

這是由於django默認你導入的驅動是MySQLdb,但是MySQLdb 不支持python3.4以上版本,因此咱們須要的驅動是PyMySQL 因此,咱們只須要找到項目名文件下的__init__,執行替換命令

import pymysql
pymysql.install_as_MySQLdb()

cmd終端建立數據庫,並在pycharm下建立類

3 models文件中建立一個類

# class UserInfo(models.Model):
#     id = models.AutoField(primary_key=True)
#     name = models.CharField(max_length=10)
#     bday = models.DateField()
#     checked = models.BooleanField()

最後經過兩條數據庫遷移命令便可在指定的數據庫中建立表 :

python manage.py makemigrations  
#生成記錄,每次修改了models裏面的內容或者添加了新的app,新的app裏面寫了models裏面的內容,相似於logging
python manage.py migrate         
#執行上面這個語句的記錄來建立表,生成的表名字前面會自帶應用的名字,例如:你的book表在mysql裏面叫作app01_book表

數據庫查看建立的表show tables; desc app02_a; (app名 下劃線 類名)

pycharm查看數據庫

![

![

經過界面實現增刪改查,每次操做後上傳

經過代碼實現增刪改查

#設置主鍵相同時,新增數據覆蓋原有的數據
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息