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

如何查询空数据库(2023年的最新答案)

时间:2023-03-07 18:34:33 网络应用技术

  指南:许多朋友询问了Django如何查询空数据库数据库。首席执行官在本文中注明将为您提供详细的答案,以供所有人参考。我希望这对每个人都会有所帮助!让我们一起看看!

  模型是Django项目的基础。如果起初设计不当,那么在下一个开发过程中将遇到更多问题。或修改模型。这样做的后果是,在下一个开发过程中,我们必须做更多的努力来纠正这些错误。

  因此,在修改模型时,我们必须尽可能多地考虑!以下是我们经常使用的一些工具和技术:

  南方,对于数据迁移,我们将在每个Django项目中使用它。但是,当Django 1.7时,将会有Django.db。移民。

  Django-Model-Utils,用于处理常见模式,例如TimessTampedModel。

  django-extensions主要使用shell_plus命令,该命令将自动加载所有应用程序中的所有应用程序

  1.基本原则

  首先,在不同的应用程序中分发模型。如果您的Django项目中有20多个型号,则应考虑旋转该应用程序。我们建议每个应用程序的模型不超过5码。

  其次,尝试使用ORM。我们需要的大多数数据库索引都可以通过对象相关模型来实现,ORM为我们带来了许多快捷方式,例如生成SQL语句,读取/更新数据库时的安全验证。因此,如果您可以使用简单的ORM语句,则应尝试尽可能多地使用ORM。只有当纯SQL语句大大简化ORM语句时,才使用纯SQL语句。并且,在编写纯SQL语句时,应优先使用RAW()然后使用frain()。

  第三,如有必要,添加索引。添加db_index = tum tum to to Model非常简单,但是很难理解何时应该添加它。建立模型后,我们不会提前添加索引。索引:

  当所有数据库查询中的使用率为10%-25%时

  或当有真实数据时,或者可以正确估计使用索引后的效果确实令人满意

  第四,请注意模型的继承。该模型的继承需要在Django中非常谨慎。Django提供了三种继承方法,1。Abstract Base类继承(请勿与Pyhton Standard库的ABC模块混合),2。Multi -Table(Multi -Table(Multi -Table(Multi -Table)模型继承。下表列出了这三个继承的优点和缺点:

  Django的创建者和许多其他开发人员认为,多观看继承方法不是一个好方法。因此,我们强烈建议您不要使用此方法。以下是选择模型继承的一些常见方法:

  如果只有少数模型重复了字段,则无需使用模型继承。您只需要将这些相同的字段添加到每个模型中。

  如果您有足够的模型具有重复的字段,则大多数字段是由抽象基类继承的,并且将同一字段提取为抽象基类。

  代理模型很少使用,与其他两个继承存在许多差异。

  请不要使用多桌继承,因为它既消耗资源又消耗复杂。如果可以,请尝试使用OneTooneFields和Forefore。

  在Django项目中,创建时间和修改时间的两个字段最有用。抽象基类继承的示例如下:

  2. Django模型设计

  如何设计良好的Django模型可能是最难,最复杂的话题。在这里,让我们看一些基本技能:

  A。标准化

  我们首先建议了解数据库归一化。如果您不知道这是什么,那么我们强烈建议您先阅读相关书籍,或搜索“关系数据库设计”或“数据库标准化”。在模型之前,应首先确保设计数据库。

  b。缓存

  正确使用缓存来帮助我们提高数据库的性能。详细信息,我们将在未来的文章中进一步介绍。

  C.何时使用空和空白

  在定义模型字段时,我们可以设置null = true和blank = true(默认值为false),知道何时设置null和空白对开发人员也非常重要。在以下表格中,我们如何列出一个,我们如何一个一个列出,我们如何一个一个列出。使用这两个选项:

  D.何时使用binaryfield

  在Django 1.6中,添加了二进制文件中的二进制数据(二进制数据或字节)。对于BinaryField,我们不能使用ORM的过滤器,不包括其他SQL操作。但是在少数情况下,我们将使用BinaryField,例如,MessagePack格式的内容,传感器接受的原始数据和压缩数据。但是应该注意的是,二进制数据通常非常大,因此可能会慢慢降低数据库。如果发生这种现象,我们可以存储文件中的二进制数据存储,然后使用文件字段存储文件的路径信息。

  另外,请勿直接从BinaryField读取文件,并将其呈现给用户。因为,1。从数据库中读取和写作总是比文件系统慢;2.数据库备份将变得巨大,花更多的时间;它需要更多的时间; 3。获取文件的过程增加了此链接,从Django到数据库。

  3.不要替换默认模型管理器

  实际上,从ORM获得模型是通过Django的模型管理器完成的。Django为每个模型提供默认模型管理器。我们不建议替换它,因为::::

  当使用模型继承时,模型将继承抽象基类模型的模型管理器,而无需继承非提交基类的经理。

  Model的第一个模型管理器通常用作默认管理器。替换后,可能会出现不可预测的问题。

  4.数据库事务(事务)

  在Django 1.6中,每个数据库查询的ORM默认值是使用M.Create()或M.Update()时,每次timeIT都会简化对第一学者对ORM的理解的理解。但是缺点是,当一种视图包含两个数据库修改时,它可能会成功,但另一个视图可能会导致数据库不完整并带来很多危险。

  解决此问题的方法是使用数据库事务。在即将到来的一系列数据库操作中,它包含在事务中。当其中一个失败时,其他操作将自动返回。Django 1.6为我们带来了一套新的简单简单简单的简单性。强大的交易机制使我们能够轻松地使用数据库事务。

  A。将整个HTTP请求包装在交易中

  Django为我们提供了一种简单的方法,可以将所有数据库操作包裹在交易中的HTTP请求中:

  您只需要在数据库设置中添加'atomic_requests':TRUE选项,并且可以将整个HTTP请求包装在交易中。这样做的好处显然是安全的,但是劣势可能会下降。因此,我们必须采用更有针对性的交易。其次,应该注意的是,数据库的状态仅是数据库的状态,而不是其他数据库项目,例如发送电子邮件。因此,当涉及这些非数据库项目时,我们应该使用ittransaction.con_atomic_request()docoration()装饰(十年):

  b。更清楚的交易控制

  更清楚的是,交易控制意味着改善真实问题Web应用程序的性能,但这也意味着更多的开发时间。在大多数网站下,由于流量有限,Atomic_requests的使用就足够了。使用手动交易控制时,请注意:

  不要进行数据修改的操作,应将其排除在交易之外

  数据修改的操作应在交易中

  在特殊情况下,您可以违反上述两个

  应当指出的是,当视图返回django.http.streaminghttpresponse时,您应该将atomic_requests设置为false,或使用trassaction.non_atomic_requests修改视图。流由流触发的额外SQL查询将自动成为Django的Django Defaut Autocommit模式。

  );}

  我认为楼上的答案似乎有些问题。您可以验证我是否正确。

  当查询GET时,当您无法查询内容时会引发异常,并且在结果过剩时会抛出异常。因此,不应使用过滤器,但应使用过滤器。

  如果归档器找不到数据,它将返回一个空查询集,[]类型类型为:querySet。

  当您发现额外的一个时,您将返回包含多个对象的查询集。

  所有使用过滤器确定是否存在过滤器。

  userInfo = user.objects.filter(email = request.post ['email'])

  如果useinfo.exists():

  打印(“是的,我们有这封电子邮件”)

  别的:

  打印(“对不起,电子邮件未注册”)

  此外,您还可以使用count()方法。userInfo.count()= 0表示没有数据,如果您大于0,则有一个或多个部分。

  楼上也有答案:如果urinfo:..................................................................

  Django Makemification和Django迁移将确保必须存在Django管理的表。

  (别忘了执行这两个管理命令,您可以使用Python Manage.py查看帮助)

  如果它是外部表(托管= false),则可以使用SQL的SQL连接到查询表的SQL。

  可以使用逻辑关系操作员

  例如:

  选择 *来自table_name

  其中(条件1和条件2)找到两种情况的结果,

  或者

  选择 *来自table_name

  其中(条件1或条件2)查询结果在两个条件下符合任何条件。

  1.代码文件加编码定义的第一行是:例如,如下:

  1

  #编码:UTF-8

  2.代码中的中文字符串最好在字符串前添加您,例如:

  1

  pssubss.objects.filter(sex = u'男性')

  3. Django技术堆栈下的所有代码都是Unicode,因此您在JSON.DUPM中进行的编码设置有点突然。

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