回覆列表
  • 1 # 變餅檔

    Django裡面,管理資料庫和sqlarchemy類似,也是透過orm框架來實現的。所有的資料庫的建立,都是在model.py裡面透過類來實現的。

    首先看看如何建立一個單表:

    a. 先定義一個類,繼承models.Model, 然後根據需求定義引數,這些引數的型別和變數後面會進一步闡述

    models.py

    from django.db import modelsclass UserInfo(models.Model):username = models.CharField(max_length=32)password = models.CharField(max_length=64)

    b. 註冊app

    settings.py

    INSTALLED_APPS = [‘django.contrib.admin‘,‘django.contrib.auth‘,‘django.contrib.contenttypes‘,‘django.contrib.sessions‘,‘django.contrib.messages‘,‘django.contrib.staticfiles‘,‘app01‘,]

    c.執行命令。 第一條命令會生成一個初始化檔案,第二個命令會生成對應的表

    python manage.py makemigrationspython manage.py migrate

    這樣,就在PyCharm自帶的sqlite資料庫裡面成功的生成了一個app01_UserInfo的表。這個表預設會有一個自增的id作為主鍵,另外兩個欄位是我們透過類建立的。

    d. 如果希望使用mysql,因為Django預設使用了MySqldb模組,這個在3.0版本里面不存在,會直接報錯。我們需要改為pymysql的模組,方法如下:

    在project同名資料夾下的__init__檔案中新增如下程式碼即可:

    import pymysql

    pymysql.install_as_MySQLdb()

    2. 對於單表的增刪改查詢

    查詢

    獲取所有結果,獲取到的結果是一個QuerySet的類似列表的物件,每一個元素本身又是一個物件,包括了id,name,password等屬性。

    obj = models.UserInfo.objects.all()

    <QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>]>

    可以透過filter進行過濾,相當於sql的where語句,因為結果也是QuerySet,因此需要再使用first()獲取第一個值

    obj = models.UserInfo.objects.filter(id=nid).first()

    增加

    models.UserInfo.objects.create(username=u,password=p,user_group_id=3)

    models.UserInfo.objects.filter(id=nid).delete()

    修改,有兩種常見方式

    第一個方式

    models.UserInfo.objects.filter(id=nid).update(username=u,password=p)

    第二個方式

    obj=models.UserInfo.objects.filter(id=nid)obj.username=uobj.save()

  • 中秋節和大豐收的關聯?
  • 送給心愛的人生日禮物應該送什麼好?