Django中ORM表的創建以及基本增刪改查


Django作為重量級的Python web框架,在做項目時肯定少不了與數據庫打交道,編程人員對數據庫的語法簡單的還行,但過多的數據庫語句不是編程人員的重點對象。因此用ORM來操作數據庫相當快捷。今天來介紹一下用ORM操作數據庫。

  1. 創建Django項目
    可以使用pycharme專業版直接快速創建。如果不是專業版也可以使用命令進行創建。下面列出命令行創建方式:
    django-admin startproject orm_test
    這時會在當前目錄創建文件夾名為orm_test,接下來進入orm_test文件夾中,執行命令:
    python manage.py runserver
    就啟動了該項目,默認瀏覽器訪問127.0.0.1:8000就可以看到項目運行成功的提示。
    接下來我們用命令在項目中創建一個應用:
    django-admin startapp cmdb
    此時基本准備就做好了。
  2. 修改配置文件
    把我們的應用即cmdb添加到 setting.py 的 INSTALLED_APPS 中:
    1 INSTALLED_APPS = [
    2     'django.contrib.admin',
    3     'django.contrib.auth',
    4     'django.contrib.contenttypes',
    5     'django.contrib.sessions',
    6     'django.contrib.messages',
    7     'django.contrib.staticfiles',
    8     'cmdb',    #我們創建的應用
    9 ]
    View Code
    另外我們基本用的是mysql數據庫,但django中默認為sqlite3。仍然在setting.py中找到 DATABASES ,對內容進行修改:
     1 DATABASES = {
     2     'default': {
     3         'ENGINE': 'django.db.backends.mysql',
     4         'NAME': 'orm_test',    #數據庫名稱
     5         'USER':'root',    #用戶
     6         'PASSWORD':'123456',    #密碼
     7         'HOST':'localhost',    #IP地址,本地測試為localhost
     8         'PORT':'3306',    #端口號
     9     }
    10 }
    View Code

    里面的“NAME”的值是你數據庫中已有的數據庫名稱,接下里在此數據庫中創建數據表。
    在python3 中,連接數據庫的是pymysql,因此在項目同名文件夾下的__init__.py 中加入以下代碼才能正常運行。

    1 import pymysql
    2 pymysql.install_as_MySQLdb()
    View Code
  3. 寫模板文件來創建表結構
    在應用(cmdb)的 models.py 中開始寫表結構,我們要做的就是寫一個類,類中的屬性為表中的列,ORM將類轉換為sql語句。簡單的寫一個下面的類,包含用戶名和密碼兩列。
    1 from django.db import models
    2 
    3 # Create your models here.
    4 
    5 class users(models.Model):
    6     username=models.CharField(max_length=32)
    7     password=models.CharField(max_length=64)
    View Code
  4. 生成數據表
    在終端中輸入命令行 python manage.py makemigrations ,這時會在應用(cmdb)下的migrations文件夾下出現一個_initial.py 的文件,它記錄着生成數據表結構的一些數據的臨時文件,接着在命令行中輸入  python manage.py migrate,由剛才的臨時文件生成數據表。我們在數據庫中查看生成的數據表,可以看到django生成的不僅僅是剛創建的一個表,而是十多個表,除自己的一張表,剩余為django內部使用(包含有緩存,cookie,session等,畢竟這么厲害的框架為你做到你想不到的是應該的)。在終端中查看一下表結構:show create table cmdb_users;


    看到的不僅有兩個自定的屬性列,多出一個id列,並且是自增的還是主鍵。
  5. 路由映射關系
    在同名項目文件夾下的urls.py 中導入應用(cmdb),寫映射關系到cmdb的views.py
    1 from django.conf.urls import url
    2 from django.contrib import admin
    3 from cmdb import views
    4 urlpatterns = [
    5     url(r'^admin/', admin.site.urls),
    6     url(r'^login/', views.login),
    7 ]
    View Code
  6. 視圖及數據表的增刪改查
    在路由映射到應用(cmdb)下的views.py 中,右映射中寫對應的函數,也就是login函數。用於顯示的觀察項目的運行,我們在此函數中就先簡單得的打印到屏幕上一句“Hello World”。
    在login函數中寫入增刪改查的語句。
     1 from django.shortcuts import render
     2 from django.shortcuts import HttpResponse
     3 # Create your views here.
     4 
     5 from cmdb import models
     6 def login(request):
     7     #增加
     8     # models.users.objects.create(username='xsmile',password=12345)
     9     # models.users.objects.create(username='sofia',password=12345)
    10     # models.users.objects.create(username='jerry',password=12345)
    11     #查看
    12     # result=models.users.objects.all() #查看所有
    13 
    14     # 條件查詢,結果為querySet類型,所以循環取出結果
    15     # result=models.users.objects.filter(username='sofia')
    16     # for row in result:
    17     #     print(row.id,row.username,row.password)
    18 
    19     #更改
    20     # models.users.objects.filter(id=2).update(username='eric')
    21     
    22     #刪除
    23     #models.users.objects.filter(username='sofia').delete()
    24 
    25     return HttpResponse('Hello World')
    View Code

    啟動項目后,瀏覽器訪問127.0.0.1:8000/login 就可看到屏幕上的Hello World,表示相關的數據操作已成功修改數據表。
    相關操作后數據表內容的變化如下:

     1 #插入一條數據后
     2 mysql> select * from cmdb_users;
     3 +----+----------+----------+
     4 | id | username | password |
     5 +----+----------+----------+
     6 |  1 | xsmile   | 12345    |
     7 +----+----------+----------+
     8 1 row in set (0.00 sec)
     9 
    10 #再插入三條數據后
    11 mysql> select * from cmdb_users;
    12 +----+----------+----------+
    13 | id | username | password |
    14 +----+----------+----------+
    15 |  1 | xsmile   | 12345    |
    16 |  2 | xsmile   | 12345    |
    17 |  3 | sofia    | 12345    |
    18 |  4 | jerry    | 12345    |
    19 +----+----------+----------+
    20 4 rows in set (0.00 sec)
    21 
    22 #修改數據后
    23 mysql> select * from cmdb_users;
    24 +----+----------+----------+
    25 | id | username | password |
    26 +----+----------+----------+
    27 |  1 | xsmile   | 12345    |
    28 |  2 | eric     | 12345    |
    29 |  3 | sofia    | 12345    |
    30 |  4 | jerry    | 12345    |
    31 +----+----------+----------+
    32 4 rows in set (0.00 sec)
    33 
    34 #刪除數據后
    35 mysql> select * from cmdb_users;
    36 +----+----------+----------+
    37 | id | username | password |
    38 +----+----------+----------+
    39 |  1 | xsmile   | 12345    |
    40 |  2 | eric     | 12345    |
    41 |  4 | jerry    | 12345    |
    42 +----+----------+----------+
    43 3 rows in set (0.00 sec)

 

原創不易,尊重版權。轉載請注明出處:http://www.cnblogs.com/xsmile/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM