码迷,mamicode.com
首页 > 数据库 > 详细

一步步学习Python开发-建立django数据库

时间:2015-08-30 11:14:48      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:

上篇文章建立了一个空的网站。现在我们要准备正式我们的网站开发咯。那么开发的第一步是啥呢?当然是要确定做什么网站了。每个人的开发习惯可能不尽相同,有点可能是从前端开始设计,有的可能是从数据库开始设计(不得不说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.name
11 
12 class Category(models.Model):
13     name = models.CharField(max_length=50)
14 
15     def __str__(self):
16         return self.name
17 
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.name
27 
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.name
36 
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.content
45 
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.date
52 
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.order
60     

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数据库

标签:

原文地址:http://www.cnblogs.com/inbase/p/4770317.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!