zoukankan      html  css  js  c++  java
  • Django学习之数据库API

    进入Python交互控制台

    python manage.py shell

    之所以用上面的命令,而不是python,是因为manage.py设置了DJANGO_SETTINGS_MODULE环境变量。不需要我们手动去导入django模块。

    导入Blog模型类

    from blog.models import Blog

    接下来,我们来学习一下数据库API

    1、查询Blog中的所有数据

    >>> Blog.objects.all()
    []
    >>> 

    因为,我们还没有插入任何数据,所以返回的是空的list。

    2、插入数据

    首先创建一个用户,因为存在外键User

    >>> from django.contrib.auth.models import User
    >>> User.objects.create(username='tmyyss')
    <User: tmyyss>
    >>> User.objects.all()
    [<User: tmyyss>]

    下面我们插入一条数据到Blog数据库

    >>> user=User.objects.get(username='tmyyss')
    >>> user
    <User: tmyyss>
    >>> blog=Blog.objects.create(user=user,title="Test,Test",text="you share roses get fun")
    >>> blog
    <Blog: Blog object>

    3、通过blog实例访问相应的对象属性

    >>> blog.id
    4L
    >>> blog.user
    <User: tmyyss>
    >>> blog.title
    'Test,Test'
    >>> blog.text
    'you share roses get fun'
    >>> blog.created_time
    datetime.datetime(2015, 3, 26, 6, 42, 17, 839353, tzinfo=<UTC>)
    >>> blog.published_time
    >>> 

    我们也改变属性值

    >>> blog.title="HA HA! That funny"
    >>> blog.save()
    >>> blog
    <Blog: Blog object>

    咦,没有变化,为什么呢?通过查看官方文档得知,需要修改Blog模型,

    修改的Blog模型如下

    from django.db import models
    from django.contrib.auth.models import User
    from django.utils import timezone
    
    # Create your models here.
    class Blog(models.Model):
            user=models.ForeignKey(User)
            title=models.CharField(max_length=200)
            text=models.TextField()
            created_time=models.DateTimeField(default=timezone.now)
            published_time=models.DateTimeField(blank=True,null=True)
    
            def __unicode__(self):
                    return self.title

    重新运行python manage.py shell

    >>> from blog.models import Blog
    >>> Blog.objects.all()
    [<Blog: HA HA! That funny>]

    现在我们就能看见我们修改的内容。

    4、过滤

    为了方便演示效果,再添加两个Blog对象

    >>> from django.contrib.auth.models import User
    >>> 
    >>> 
    >>> user=User.objects.get(username='tmyyss')
    >>> Blog.objects.create(user=user,title='I love Python.',text='I love Python,I love python')
    <Blog: I love Python.>
    >>> Blog.objects.create(user=user,title='I love Django.',text='I love Django,I love Django')
    <Blog: I love Django.>


    过滤使用关键词filter

    >>> Blog.objects.filter(id=6)
    [<Blog: I love Django.>]
    >>> Blog.objects.filter(title='I love Python.')
    [<Blog: I love Python.>]

    5、排序

    排序使用关键词

    >>> Blog.objects.order_by('-created_time')
    [<Blog: I love Django.>, <Blog: I love Python.>, <Blog: HA HA! That funny>]
    >>> Blog.objects.order_by('-id')
    [<Blog: I love Django.>, <Blog: I love Python.>, <Blog: HA HA! That funny>]
    >>> Blog.objects.order_by('-title')
    [<Blog: I love Python.>, <Blog: I love Django.>, <Blog: HA HA! That funny>]
  • 相关阅读:
    使用Chrome开发者工具研究JavaScript的垃圾回收机制
    Java JDK目录下的jmap和jhat工具的使用方式
    Java注解@Cacheable的工作原理
    使用Java JUnit框架里的@Rule注解的用法举例
    使用Java JUnit框架里的@SuiteClasses注解管理测试用例
    Java JUnit框架里@Category注解的工作原理
    使用SAP CRM mock框架进行单元测试的设计
    将ABAP透明表的定义(元数据)解析出来导入到剪切板(clipboard)里
    SAP ABAP Netweaver里的胖接口(fat interface)
    关于STM32的FLASH操作【转载】
  • 原文地址:https://www.cnblogs.com/tmyyss/p/4368957.html
Copyright © 2011-2022 走看看