1. 程式人生 > >django基礎 第五章 Django連接數據庫

django基礎 第五章 Django連接數據庫

如果 用戶 earch 遷移 執行 mage go基礎 delet get

第五章 Django連接數據庫

1 連接配置

django 連接mysql的配置流程:

  • 安裝 pymysql pip install pymysql

  • 創建數據庫用戶(有創建數據庫權限)

  • 創建數據庫

  • 修改配置settings

  • 修改項目文件夾(和settings.py文件所在的目錄)下__init__.py 文件
    寫上:

    import pymysql
    pymysql.install_as_MySQLdb()
  • 設置時區 TIME_ZONE = ‘Asia/ShangHai‘ # 北京時間

2 django的ORM系統

ORM概念:對象關系映射(Object Relational Mapping,簡稱ORM)

ORM的優勢:不用直接編寫SQL代碼,只需像操作對象一樣從數據庫操作數據。

django模型映射關系:

模型類必須都寫在app下的models.py文件中。

模型如果需要映射到數據庫,所在的app必須被安裝.

一個數據表對應一個模型類,表中的字段,對應模型中的類屬性.

2 模型的創建與激活

創建模型
? 每一個模型都是django.db.models.Model的子類

? 類變量 表示模型中的數據庫字段

? 每一個字段由一個字段類的實例表示
技術分享圖片

激活模型
項目中註冊app
在settings.py中配置DATABASES
技術分享圖片

運行數據庫遷移命令(一定要在項目根目錄下)

python mange.py makemigrations teacher  # 將模型類映射到數據庫(其中teacher為指定映射,不寫默認全部映射)
python manage.py migrate   # 將映射文件中的映射數據提交到數據庫中

技術分享圖片
打開數據我們能看到創建的以app名_模型名的數據表,而其他的一些表格是django自動生成的.

註意:如果要刪除表,那麽可以去django模型中註釋掉模型類,然後執行映射的命令,不要手動在命令行裏面去刪除.

4.數據的增刪改查

-工具 django shell 調試

python manage.py shell

from movie.models import Movie # movie為app名,Movie為模型類
def add_date(request):
    # 方法一
    movie_1 = Movie(name="情聖", time=2010)  # 模型類的實例
    movie_1.save()
    # 方法二
    movie_2 = Movie()
    movie_2.name = '毒液'
    movie_3.time = 2016
    # 方法三
    Movie.objects.create(name="貞子", time=2001)
    # 方法四
    Movie.object.get_or_create(name="賭聖", time=2004)
    return HttpResponse('插入數據')

def delete_date(request):
    # 條件刪除
    Movie.objects.get(time=2010).delete()
    Movie.objects.filter(name="情聖")。delete()
    # 全刪除
    Movie.objects.all().delete()
    return HttpResponse('刪除成功')

def update_date(request):
    # 方法一:先查找對象後修改
    rs = Movie.objects.get(name="賭聖")
    rs.name = '賭聖2'
    rs.save()
    # 方法二:直接修改
    Movie.objects.filter(name="賭聖").update(name="賭聖2")
    
    # 全部修改
    Movie.objects.all().update(time=2010)
    return HttpResponse('修改成功')

all()和filter()方法返回的是QuerySet對象.

get()方式返回的單個對象,如果符合條件的對象有多個,則get報錯!

def search_date(request):
    # 查詢所有數據對象
    re = Movie.objects.all()
    # 查詢一個數據對象
    re = Movie.objects.get(time=2001)    
    # 查詢滿足條件的對象
    re = Movie.objects.filter(name="情聖")
    print(re)
    return HttpResponse('查詢成功')

django基礎 第五章 Django連接數據庫