简介:今天,首席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相关内容的摘要。希望它对您有所帮助!如果您解决了问题,请与更多关心此问题的朋友分享?