django学习(2): models
上一篇简单介绍了一下django, 这一篇来介绍下django的models, django自带了一个ORM框架, 关于ORM就不多说了,相比sqlalchemy来说要方便很多, 毕竟是定制的嘛.
我们来看看django的模型是如何工作的. 首先引入models的包 from django.db import models 模型所需要的东西都在这里面, 对于模型来说一个model就对应一张数据库表, 我们来创建一个模型对象, 直接继承models.Model 打开app下的models.py 文件
1 from django.db import models 2 class People(models.Model): 3 name = models.CharField(max_length=20) #这个是一个字符列 对应mysql里面的varchar 4 age = models.IntegerField() #这是一个数字列 对应mysql里面的integer 5 description = models.TextField() #这是一个文本列 对应mysql里面的longtext 6 birthday = models.DateTimeField() #时间戳列, 对应mysql里面的datetime
创建写好之后, 我们执行以下python manage.py syncdb 通过这个命令会自动同步你的数据库, 不过要注意的是这个命令只会创建这个表, 而如果你中途对模型改变, 其不会更新数据表
我们通过django的shell来看看结果 输入python manage.py shell, 然后把刚才的People类import进来
输入 from yourapp.models import People 然后创建一个People实例 p = People()
这时候的p实例应该算是一个临时态的实例, 他还没有和数据库进行关联, 当我执行p.save()的时候, django就会自动创建一条数据塞进数据库中, 这时候这个对象就变为持久态. 不过这个时候支持p.save()是不行的 因为我们的属性都是空的, django模型属性默认是不能为空的, 我们来填充下属性
然后在执行p.save() 这样我们就插入了一条数据使用People.objects.all()我们看到里面已经有一条数据了
我们再来插入一条数据 People(name="xiaozhang", age=18, description="number one", birthday=datetime.datetime(2000,1,1)).save(), 再执行People.objects.all()看到我们已经有两条数据了 默认的如果没有定义主键的话django 会给你创建一个主键id, 我们通过这个id来查找我们的模型, 输入People.objects.get(id=1)
于是第一次save的People就取出来了, 其实objects在django中是一个QuerySet一个查询集合
他的API都在这里面:https://docs.djangoproject.com/en/1.5/ref/models/querysets/