• Django入门-基本数据库API


    # 现在系统里还没有 Question 对象
    >>> Question.objects.all()
    <QuerySet []>
    
    # 创建新 Question
    # 在 settings 文件里,时区支持被设为开启状态,所以
    # pub_date 字段要求一个带有时区信息(tzinfo)
    # 的 datetime 数据。请使用 timezone.now() 代替
    # datetime.datetime.now(),这样就能获取正确的时间。
    >>> from django.utils import timezone
    >>> q = Question(question_text="What's new?", pub_date=timezone.now())
    
    # 想将对象保存到数据库中,必须显式的调用 save()。
    >>> q.save()
    
    # 现在它被分配了一个 ID。注意有可能你的结果是“1L”而不是“1”,
    # 这取决于你在使用哪种数据库。这不是什么大问题;只是表明
    # 你所用的数据库后端倾向于将整数转换为 Python 的
    # long integer 对象。
    >>> q.id
    1
    
    # 通过属性来获取模型字段的值
    >>> q.question_text
    "What's new?"
    >>> q.pub_date
    datetime.datetime(2012, 2, 26, 13, 0, 0, 775217, tzinfo=<UTC>)
    
    # 通过改变属性值来改变模型字段,然后调用 save()。
    >>> q.question_text = "What's up"
    >>> q.save()
    
    # objects.all() 显示数据库中所有 question。
    >>> Question.objects.all()
    <QuerySet [<Question: Question object>]>



    # 确认添加的 __str__() 是否正常工作。
    >>> Question.objects.all()
    <QuerySet [<Question: What's up?>]>
    
    # Django 提供了丰富的数据库查找 API,
    # 通过关键字参数就能轻松使用。
    >>> Question.objects.filter(id=1)
    <QuerySet [<Question: What's up?>]>
    >>> Question.objects.filter(question_text__startswith='What')
    <QuerySet [<Question: What's up?>]>
    
    # 获取今年发布的问题
    >>> from django.utils import timezone
    >>> current_year = timezone.now().year
    >>> Question.objects.get(pub_date__year=current_year)
    <Question: What's up?>
    
    # 查找一个不存在的 ID 将会引发异常
    >>> Question.objects.get(id=2)
    Traceback (most recent call last):
        ...
    DoesNotExist: Question matching query does not exist.
    
    # 通过主键来查找数据是非常常见的需求,所以 Django
    # 为这种需求专门制定了一个参数。
    # 以下代码等同于 Question.objects.get(id=1)。
    >>> Question.objects.get(pk=1)
    <Question: What's up?>
    
    # 确认我们自定义的方法正常工作。
    >>> q = Question.objects.get(pk=1)
    >>> q.was_published_recently()
    True
    
    # 给这个问题添加几个选项。create 函数会创建一个新的
    # Choice 对象,执行 INSERT 语句,将 Choice 添加到
    # Question 的选项列表中,最后返回刚刚创建的
    # Choice 对象。Django 创建了一个集合 API 来使你可以从
    # 外键关系的另一方管理关联的数据。
    # (例如,可以获取问题的选项列表)
    >>> q = Question.objects.get(pk=1)
    
    # 显示所有和当前问题关联的选项列表,现在是空的。
    >>> q.choice_set.all()
    <QuerySet []>
    
    # 创建三个选项。
    >>> q.choice_set.create(choice_text='Not much', votes=0)
    <Choice: Not much>
    >>> q.choice_set.create(choice_text='The sky', votes=0)
    <Choice: The sky>
    >>> c = q.choice_set.create(choice_text='Just hacking again', votes=0)
    
    # Choice 对象能通过 API 获取关联到的 Question 对象。
    >>> c.question
    <Question: What's up?>
    
    # 反过来,Question 对象也可以获取 Choice 对象
    >>> q.choice_set.all()
    [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]
    >>> q.choice_set.count()
    3
    
    # 查找 API 的关键字参数可以自动调用关系函数。
    # 只需使用双下划线来分隔关系函数。
    # 只要你想,这个调用链可以无限长。
    # 例如查找所有「所在问题的发布日期是今年」的选项
    # (重用我们之前创建的 'current_year' 变量)
    >>> Choice.objects.filter(question__pub_date__year=current_year)
    [<Choice: Not much>, <Choice: The sky>, <Choice: Just hacking again>]
    
    # 试试删除一个选项,使用 delete() 函数。
    >>> c = q.choice_set.filter(choice_text__startswith='Just hacking')
    >>> c.delete()

    官方地址:https://docs.djangoproject.com/en/1.11/topics/db/queries/
  • 相关阅读:
    MySQL优化语句
    Nagios监控mysql的安装配置及报警
    LR,mad
    时序预测 04
    [标点符...] 机器学习算法之XGBoost -什么是XGBoost? -优势&运算流程 -算法原理&数学原理 -一棵树的生成细节 -主要参数介绍
    [标点符] 机器学习算法之Boosting -集成学习的概念扥类 -bagging/boosting/stacking的区别 -boosting算法原理 -AdaBoost/Gradient Boosting/XGBoost简介
    [标点符] 机器学习算法之决策树 学习笔记(1/3) 待续...
    【第17期Datawhale | 零基础入门金融风控-贷款违约预测】Task05:模型融合(3天) : stacking (叠加)+GPU加速示例
    [特征工程01] 什么是归一化?归一化/标准化有什么用?pandas与归一化的简单实践
    【第17期Datawhale | 零基础入门金融风控-贷款违约预测】Task04:建模与调参(3天) : 调参一下记录和结果
  • 原文地址:https://www.cnblogs.com/EmptyRabbit/p/8533722.html
Copyright © 2020-2023  润新知