一步步學習Python開發-建立django資料庫

來源:互聯網
上載者:User

標籤:

上篇文章建立了一個空的網站。現在我們要準備正式我們的網站開發咯。那麼開發的第一步是啥呢?當然是要確定做什麼網站了。每個人的開發習慣可能不盡相同,有點可能是從前端開始設計,有的可能是從資料庫開始設計(不得不說django在資料庫操作方面是很強大的)。我屬於後者,因為我對前端不太熟悉,哈哈!

我要做一個公司內部團體訂餐系統,方便統一訂餐。功能需求很簡單:公司每天要訂餐,訂餐每天定一家餐館的菜。

我想到需要建立如下資料庫表:餐館(Restaurant)、商品分類(Category)、商品(good)、消費者(Custom)、消費者評論(Comment )、菜(Menu每個消費者可能有多個菜),訂單(Order 每天訂單次數基本固定)。具體到每個表的關鍵字,在後面會看到。

好了分析好了我們需要的資料結構,我們就利用Python-django構建我們的資料庫,由於此系統對資料庫的要求不高,我們使用預設的sqlite:

1. 首先我們要建立一個app(為啥叫app,待後續分解)。我們建立一個名為polls(名字你隨意):python manage.py startapp polls

2. 如果執行成功,會再工程目錄下產生一個polls目錄。

3. 設計資料庫結構及映射關係:django採用ORM(對象關係映射)來建立資料庫。你要建立的資料庫,需要修改polls app目錄下的models.py 檔案。在此檔案中添加對象及對象之間的映射關係,以下為我的修改,添加了之前說明的資料庫表:

 1 from django.db import models 2  3 # Create your models here. 4  5 class Restaurant(models.Model): 6     name = models.CharField(max_length=50) 7     URL = models.CharField(max_length=200, default="") 8  9     def __str__(self):10         return self.name11 12 class Category(models.Model):13     name = models.CharField(max_length=50)14 15     def __str__(self):16         return self.name17 18 class Good(models.Model):19     name = models.CharField(max_length=50)20     price = models.FloatField()21     description = models.CharField(max_length=200)22     category = models.ForeignKey(Category)23     restaurant = models.ForeignKey(Restaurant)24 25     def __str__(self):26         return self.name27 28 class Custom(models.Model):29     name = models.CharField(max_length=20)30     sex = models.BooleanField()31     age = models.IntegerField()32     department = models.IntegerField()33 34     def __str__(self):35         return self.name36 37 class CustomComment(models.Model):38     content = models.CharField(max_length=200)39     score = models.IntegerField()40     good = models.ForeignKey(Good)41     custom = models.ForeignKey(Custom)42 43     def __str__(self):44         return self.content45 46 class Order(models.Model):47     name = models.CharField(max_length=50, default= "晚餐")48     date = models.DateTimeField()49 50     def __str__(self):51         return self.date52 53 class Menu(models.Model):54     order = models.ForeignKey(Order)55     good = models.ForeignKey(Good)56     custom = models.ForeignKey(Custom)57 58     def __str__(self):59         return self.order60     

4. 將以上資料庫表資訊及映射關係應用到真實的資料庫中:

  • 根據model產生具體操作檔案,告訴django你的資料庫變化:python manage.py makemigrations polls
  • 上述操作會產生一個以序號開標頭檔,首次是0001,之後每次操作加1,要做修改修改指令後面對應的數字即可,我們要利用這個檔案產生具體操作資料庫的sql語句:python manage.py sqlmigrate polls 0001
  • 好了有了sql語句我們就可以真正修改資料了:python manage.py migrate
  • 有時候我們的第設計一次的資料庫並不是完美的,如果添加新的非空列,在model中要設定default值。上面的產生sql語句的指令注意使用新的序號。
  • 你可以通過python命令列體驗具體如何操作資料:

    

$python>>> import django>>> django.setup()>>> from polls.models import Restaurant, Category,Good #引入資料對象>>> Restaurant.objects.all() #查詢所有餐館資料>>> r = Restaurant("宇宙卷餅","http://waimai.baidu.com/waimai/shop/598777734712241745")>>> r.save()>>> c = Category("熱賣")>>> c.save()>>> g = Good("醬香雞腿肉卷(中份)", 20, "美味", c, r, 0)>>> g.save()>>> g.name #查詢儲存結果>>> g.category.name>>> g.restaurant.name

好了現在資料庫建立完畢,我們也進行了測試

一步步學習Python開發-建立django資料庫

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.