Django中操作数据库的3种方法

来源 :科学与生活 | 被引量 : 0次 | 上传用户:gx7411
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Django通过Manager(模型管理器)提供数据库访问接口。默认情况下,Django为每个模型添加一个名为objects的管理器,调用objects的各种方法 可完成相关的数据库操作;也可以用模型管理器的raw()方法执行原始SQL查询并返回模型示例;或者不使用模型直接执行原始SQL。本文介绍3种方法,可根据自身情况选择一种方法完成数据库操作。
  在django中我们只需要操作类或者对象,ORM它系统帮你根据类和对象来操作数据库
  类--à数据表 对象 ---〉数据行 属性—〉 字段
  首先创建项目mydjango
  1、 创建book 应用
  2、 在settings.py文件中加入book应用
  3、 打开models.py定义表的结构
  class faqsdata(models.Model):
  question = models.CharField(max_length=20, blank=True)
  answer = models.CharField(max_length=20, blank=True)
  4、使用命令生成迁移文件(系统帮你生成的sql语句)
  python manage.py makemigrations
  5、使用命令 运行 迁移文件(相当于执行sql命令)
  python manage.py migrate
  6、打开终端输入以下命令进入当前项目的Python交互环境
  python manage.py shell
  7、导入模型类
  from book.models import faqsdata
  一、使用默认管理器objects
  Django通过模型对象的默认管理器objects提供了多种获取数据的方法
  (1)create方法创建模型的对象,并将数据保存进数据库
  >>> ds=faqsdata.objects.create(question='test',answer='bbb')
  >>> ds=faqsdata.objects.create(question='test434',answer='aaa')
  (2)all方法獲取所有数据行,相当于sql中的select * from ****
  >>> ds=faqsdata.objects.all()
  >>> for a in ds:
  ... print(a.id,a.question,a.answer)
  ...
  1 test bbb
  2 test4334 aaa
  (3)get、filter、update方法过滤出符合条件的行进行更新
  1更新单行
  >>> ds=faqsdata.objects.get(id="1")
  >>> print(ds.id,ds.question,ds.answer)
  1 test bbb
  >>> ds.question="yyyyyyyy"
  >>> d.save()
  >>> print(ds.id,ds.question,ds.answer)
  1 yyyyyyyy bbb
  2更新多行
  >>> ds=faqsdata.objects.filter(id__lte="9")
  >>> ds.update(answer='bbbbbb')
  4
  >>> ds=faqsdata.objects.update(answer='ppppp') 全表更新
  >>>
  (4)filter、delete方法过滤出符合条件的行进行删除
  >>> faqsdata.objects.filter(id__gt=9).delete() get删除单行
  (3, {'book.faqsdata': 3})
  二、用模型管理器raw()方法执行原始SQL
  >>> ds=scores.objects.raw("select * from book_scores where yw<%s",[50])
  >>> for a in ds:   ... print(a.id,a.kh,a.xm,a.yw,a.sx,a.bj)
  ...
  >>> ds=scores.objects.raw("update book_scores set yw=100 where id=3")
  >>> ds.query._execute_query()
  >>>d=scores.objects.raw("insert into book_scores(kh,xm,yw,sx,bj) values ('10110199','fdsaf',11,22,'class1')")
  >>> d.query._execute_query()
  >>> d=scores.objects.raw("delete from book_scores where id=63")
  >>> d.query._execute_query()
  三、不使用模型访问数据库
  也可以不使用模型管理器直接访问数据库,使用游标,但是有SQL注入风险,基本步骤如下:
  调用django.db.connection.cursor()方法获得一个游标对象。django.db.connection對象代表默认数据库连接。
  调用游标对象的execute(sql)方法执行SQL命令。
  调用游标对象的fetchall()或fetchone()方法返回数据。
  >>> from django.db import connection
  >>> cursor=connection.cursor()
  >>> cursor.execute("select * from book_scores where id<7")
  >>> for a in cursor.fetchall():
  ... print(a[0],a[1],a[2])
  ...
  >>>a=cursor.execute("insert into book_scores(kh,xm,yw,sx,bj) values ('10110199','fdsaf',11,22,'class1')")
  >>> a=cursor.execute("update book_scores set yw=100 where id=10")
  >>> a=cursor.execute("delete from book_scores where id=10")
其他文献
摘要在设计及调整盐水固井水泥浆配方时,水泥浆经常发生异常胶凝、脱水、气窜等异常现象。本文通过对水泥浆降失水剂合成配方的调整及甲基丙烯酰胺的引入制备了一种可解决异常胶凝问题的抗高温抗盐油井水泥降失水剂。  关键词油井水泥;异常胶凝;抗高温;抗盐;降失水剂  在使用淡水水泥浆封固盐膏层时极易发生盐层溶解导致地层间流体窜槽的形成,水泥石与地层胶结质量差造成固井质量差,因而需要用饱和或半饱和盐水进行固井作
期刊
摘要:电子商务对餐饮行业的提升还有更为广阔的空间,网上订餐解决了消费者紧张工作中的餐饮问题,扩展了餐饮企业的销售空间,增加了销售利润,也为社会提供了更多岗位机会。本文的系统采用MySQL数据库系统作为数据支撑,编程语言采用Java,引入SSH框架。系统具有操作便捷、简单实用等特点,通过企业对系统的引进,减少了餐饮企业人力物力的投入,也增加了企业的客源、资金等运转速度。  关键词:电子商务;订餐系统
期刊
摘要:近几年来,互联网金融在行业技术创新驱动下呈现出高速发展的态势,但同时其准入无门槛、行业无准则、监督无机构等现状也隐藏着巨大的信用风险。本文对当前互联网金融存在的监管问题进行了简要分析,并在此基础上提出了一系列的对策。  关键词:互联网金融;监管;对策  一、互联网金融监管现存问题  1.互联网金融发展与监管模式不匹配  目前,我国互联网金融业务呈现如火如荼的繁荣态势,但是相应的监管体系还比较
期刊
摘要:在信息技术应用与社会经济发展不断结合的背景下,各种产业建设和人们的生产生活对网络的需求也进行了更加明显的调整和改造,除了更加强调网络的覆盖之外,同时也对计算机的使用提出了新的期望。而软件作为支撑计算机运行的重要元素,在这种情况下也应得到更高的重视和重视,尤其是软件开发应强调分层技术的结合,提高计算机的使用效果。因此,本文重点研究分层技术在计算机软件开发中的应用。  关键词:分层技术;计算机软
期刊
摘要:如今的社会是信息的时代,人们工作生活的方方面面都渗透着网络信息的影响。社会经济发展过程中,伴随着计算机网络技术的迅速发展,它所涉及的领域越来越广,也出现了诸多问题亟待我们解决。本文重点分析了现如今社会中计算机网络发展面临的主要问题,并对解决对策加以探讨。  关键词:计算机网络发展问题网络安全对策  当今社会已经步入信息社会,计算机技术和网络技术都获得极大的发展,两者结合而成的计算机网络在如今
期刊
摘要:信息技术的发展,明显加快了世界数字化转型速度,随之而来的远程办公也受到了网络威胁。面对网络安全攻击并不是无从下手,如果提前做好安全部署,构建好安全防护体系,可在一定程度上防患于未然。因此文章重点就企业信息化建设网络安全威胁展开分析。  关键词:企业;信息化建设;网络威胁;措施  在如今的互联网时代,企业很难在没有网络的情况下开展业务,保障企业的网络信息安全是IT运维最重要工作之一。在实际的运
期刊
摘要:随着经济水平的大幅度提高,计算机技术、微电子技术和无线通信技术也在这一背景下蓬勃发展。其中,无线传感器网络已成为环境监测、军事等领域不可缺少的工具。该网络具有较强的通信和计算能力。它通过无线通信将大量小型廉价的传感器节点集成到一个多组织网络中,以协作的形式在局部区域采集、传输和融合各种检测对象数据。由于无线传感器网络的复杂性,对其安全性提出了更高的要求。因此,有必要根据实际情况建立信息安全防
期刊
摘要:聚类分析是数据挖掘的主要分支,它根据数据的相似性来划分数据。它已广泛应用于机器学习、人工智能、网络安全等诸多领域。基于聚类算法,分析了计算机网络信息安全的保护策略。  关键词:大数据聚类算法;计算机网络信息;安全防护;策略  Internet技术的飞速发展给人们带来了极大的便利,但同时也逐渐暴露出一系列由于网络造成的设计缺陷、安全漏洞等因素引起的安全问题,而网络安全是所有应用顺利运行的保证和
期刊
摘要:在网络科技发展的时代,用户数据的安全已成为当今网络科技中的一个突出问题。随着通信技术的不断发展,数据的安全性也是用户最关心的问题。因此,本文重點研究计算机网络通信中的数据加密技术。  关键词:计算机网络通信;数据加密技术;方法  我国已经进入大数据经济时代,互联网已经成为人们生活和工作的重要元素。在数据信息化发展的基础上,信息泄露事件以井喷式的形式不断冲击着公众的视线。信息泄漏的主要来源是传
期刊
摘要:就计算机网络技术而言,具有很强的开放性。在此基础上,使计算机网络容易受到攻击,进而产生一些安全问题。在这种情况下,它不仅在很大程度上影响计算机的安全运行,而且会导致用户信息的泄露。因此,本文重点对计算机网络安全技术的影响因素及防范策略进行分析。  关键词:计算机网络;安全技术;影响因素;防范策略  计算机网络技术已经与现代人的日常生活、工作和学习密切相关。如果计算机网络遭到入侵,不仅会导致计
期刊