当前位置: 首页 > 网络应用技术

如何查询数据(Django查询数据库)

时间:2023-03-08 20:12:41 网络应用技术

  简介:今天,首席CTO Note将与您分享如何查询Django的数据。如果您可以解决您现在面临的问题,请不要忘记注意此网站。让我们现在开始!

  第一个构建学生,分区,课程,stu_info表

  添加一对多表的关系数据:

  1.第一种方法是将其添加为上一个方法。应该注意的是,外键的值必须是关联表中存在的存在。

  2.第二种方法是属性分配的方法,因为我们具有模型类中部门的属性,并且该属性的对象的类型必须是部门表类型的实例对象

  访谈与对象相关的对象:

  我们具有定义学生类别类别的部门的属性,因此,当我们访问它时,我们可以直接找到可以通过Student.Deppartment的形式直接找到学生附属学院的大学。

  那么,如果您拜访访问一所大学的学生时我们也想改变呢?

  访谈与对象相关的对象:

  您可以在定义期间设置相关的_name参数,以涵盖foo_set的名称。

  clear()将所有对象集中在关联对象

  多桌查询----交叉关系查询:

  Django提供了一种强大而直观的方式来“处理”查询中相关关系。它会自动帮助您处理后台加入。如果您想跨越关系,则只需要使用关联的模型字段的名称并使用双重字段的行进行分开,直到您想要的字段:

  它也可以反向起作用。要引用“反向”关系,您只需要使用模型的小写字母的名称即可。

  Django有自己的ORM模块。

  从流行的角度来看,该过程如下:

  在django中写python代码

  通过ORM模块将Python代码转换为SQL语句

  通过数据库操作模块,例如PymySQL,使用SQL语句,然后访问数据库访问数据

  上述过程的相反方向

  获取Python格式的数据

  清单1.您可以尝试使用JavaScript命令的示例使用MongoDB

  var x =“ 0”;

  x === 0;

  类型 ({});

  开始使用MongoDB后,您不必成为JavaScript专家;这里有一些有用的概念:

  您可以使用对象文字语法(对象文字语法)创建对象。

  您可以使用方括号([])创建数组。

  除了数字,布尔值,null和未定义值之外,JavaScript中的所有其他值都是对象。

  如果您想了解有关JavaScript其他特征的更多信息,例如面向原型的编程(OOP),范围规则及其功能编程特征,请参考参考材料。

  MongoDB是一个无模型数据库,与关系数据库完全相反。无霉数据库不使用表单,而是使用文档集合。这些文档是使用对象文字创建的,如列表2所示。

  清单2.文档创建示例

  var person1 = {名称:“约翰·杜伊”,年龄:25};

  var person2 = {name:“ jane doe”,年龄:26,部:115};

  现在,请执行列表3中显示的命令以创建一个新集合。

  列表3.创建一个集合

  DB.Employees.Save(Person1);

  DB.Employees.Save(Person2);

  因为MongoDB具有无模型特征,所以Person1和Person2不必具有相同的列类型,并且它们甚至没有相同的列。并且MongoDB本身具有动态特征,因此它会创建员工而不是抛出错误。可以通过find()方法检索文档。要获取员工中的所有文档,您可以直接调用find()而无需使用任何参数,如列表4所示。

  列表4.一个简单的mongodb查询

  db.employees.find();

  //返回

  

  {“ _id”:{“ $ oid”:“ 4E363C4DCC93747E68055FA1”},

  “名称”:“ John Doe”,“年龄”:25},

  {“ _id”:{“ $ oid”:“ 4E363C53CC93747E68055FA2”},

  “名称”:“ Jane Doe”,“ Depth”:115,“年龄”:26}

  这是给予的

  请注意,_id等同于主键。要运行特定的查询,您需要将键/值向其他对象使用,以指示要查询的内容,如列表5所示。

  清单5.通过搜索参数查询

  db.employees.find({名称:“ John Doe”});

  //返回

  

  {“ _id”:{“ $ oid”:“ 4E363C4DCC93747E68055FA1”},

  “名称”:“ John Doe”,“年龄”:25}

  这是给予的

  要查询25岁以上的员工,请在列表6中执行命令。

  列表6.与25岁以上的查询员工

  db.employees.find({age:{'$ gt':25}});

  //返回

  

  {“ _id”:{“ $ oid”:“ 4E363C53CC93747E68055FA2”},

  “名称”:“ Jane Doe”,“ Depth”:115,“年龄”:26}

  这是给予的

  $ GT是一个特殊操作员,这意味着大于1列出其他修饰符。

  表1.可用于MongoDB的道德特征

  装饰

  描述

  $ GT大于

  $ LT小于

  $ GTE大于或等于

  $ LTE小于或等于或等于或等于

  $检查是否存在数组,类似于“ in” SQL运算符。

  当然,您还可以使用update()方法来更新记录。您可以更新整个记录,如列表7所示。

  列表7.更新整个记录

  db.employees.update({

  名称:“ John Doe”,//要更新的文档

  {名称:“ John Doe”,年龄:27} //更新的文档

  });

  此外,您可以使用$ SET运算符仅更新一个值,如列表8所示。

  列表8.记录中只有一个值

  db.employees.update({名称:“ John Doe”,

  {'$ set':{年龄:27}}

  });

  要清除集合,您可以在没有任何参数的情况下调用remove()方法。例如,如果要从员工集合中删除John Doe,则可以执行清单9中显示的操作。

  清单9.从员工收藏中删除John Doe

  db.employees.remove({“名称”:“ John Doe”});

  db.employees.find();

  //返回

  

  {“ _id”:{“ $ oid”:“ 4E363C53CC93747E68055FA2“}”},“ name”:“ Jane Doe”,

  “部门”:115,“年龄”:26}

  这是给予的

  对于刚刚开始使用MongoDB的您,您可以继续浏览官方网站。该网站提供了一个简单的基于网络的交互式MongoDB命令提示,以及指南和官方文档。请参考参考信息。

  背面

  集成的Django和MongoDB

  从Python或Django访问MongoDB有几种选项。第一个选择是使用Python模块,即Pymongo.List 10是一个简单的Pymongo会话。假设您已经安装了MongoDB,并且已经在端口上运行了一个实例。

  列表10.样品pymongo会话

  来自Pymongo进口连接

  databasename =“ sample_database”

  连接=连接()

  DB =连接[Databasename]

  员工= DB ['员工']

  Person1 = {“名称”:“ John Doe”,

  “年龄”:25,“ dept”:101,“语言”:[“英语”,“德语”,“日语”]}

  Person2 = {“名称”:“ Jane Doe”,

  “年龄”:27,“语言”:[“英语”,“西班牙语”,“法语”]}

  打印“清算”

  员工.remove()

  打印“保存”

  员工。Save(person1)

  员工。Save(person2)

  打印“搜索”

  for e in雇员。find():

  打印e [“名称”] +“ + unicode(e [“语言”))

  Pymongo允许您同时运行多个数据库。要定义连接,只需将数据库名称传递给连接实例。在此示例中,Python dictionary替换JavaScript Object Noodles NOODLES创建新文档定义,而Python列表替换了JavaScript数组。查找方法返回一个数据库目标,您可以迭代。

  语法的简单性使MongoDB命令行和包含Pymongo的跑步命令之间的切换。例如,列表11显示了如何使用Pymongo运行查询。

  列表11.与Pymongo一起运行查询

  for e in雇员。find({“ name”:“ John Doe”}):

  打印e

  您打电话给Python的MongoDB的另一个选择是Mongongine。如果您使用了django的构建-in -inm,那么您应该非常熟悉此。Mongongine是一张文档的地图到一个对象,该映射类似于从概念上映射到Orm的映射器的地图。清单12显示了一个词典的例子。

  列表12.蒙古示例会议

  来自蒙古的进口 *

  连接('homployeedB')

  班级员工(文档):

  name = stringfield(max_length = 50)

  年龄= int字段(必需= false)

  John =员工(名称=“ John Doe”,年龄= 25)

  John.Save()

  Jane =员工(名称=“ Jane Doe”,年龄= 27)

  jane.save()

  for e employee.objects.all():

  打印e [id“],e [“ name”],e [“ age”]

  员工对象继承了词古纳.document.在此示例中,使用了两种字段类型:stringfield和intfield。类似于django的ORM,您需要通过查询获得集合中的所有文档,请致电emblayee.objects.all(all)。)。请注意,如果要访问唯一的对象ID,请使用“ ID”而不是“ _id”。

  背面

  示例博客

  现在创建一个名为blongo的简单博客。和Firefox。加载了网页后,Blongo将显示所有博客条目输入,并允许任何条目的更新和删除操作。换句话说,允许所有标准的CRUD操作。Django视图具有三种方法:索引,更新和删除。

  样式表(CSS)的层定义了一个单独的静态文件。我不想在此处重复。您可以随意浏览下载部分中包含的源代码。

  假设已经安装了所有已安装的工具并且这些组件可以运行良好,则请创建一个新的Django项目和必要的组件,如列表13所示。

  列表13.创建Django博客项目的命令

  $ django- addmin.py startproject blongo

  $ CD Blongo

  $ django- admin.py startapp blogapp

  $ MKDIR模板

  $ cd blogapp

  $ mkdir静态

  Django 1.3的新内容是Django中包含的贡献应用程序,可用于改进静态文件的处理。添加到任何应用程序目录的静态目录(例如,在本示例中为Blogapp)并确保Django.contrib.staticfiles包含在已安装的应用程序中。django可以找到静态文件,例如.css和.js,而无需任何其他方法。清单14显示了设置文件的代码行。这些代码线已被相应地修改(从默认设置.py文件),以使博客应用程序正常运行。

  从jobs.models导入工作

  从DateTime导入DateTime

  q3 = job.objects.filter(pub_date___gte = dateTime(2006,1,1))

  Q4 = Q3.Filter(local___city__exact =“ Cleveland”,

  ... local__ state__exact =“俄亥俄州”)

  结论:以上是首席CTO注释为每个人查询数据的Django相关内容的摘要。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?