简介:许多朋友问有关Django模型如何难以使用的问题。本文的首席执行官注释将为您提供详细的答案,以供您参考。我希望这对每个人都会有所帮助!让我们一起看看!
尽管您可能会感到失望,但您必须告诉您,致命错误造成的问题,只要无法打开,就不得修理。我遇到了6次以上。有时我可以打开它。您需要的零件已经消失,并且您不需要的零件可能仍然存在。这需要在生产过程中始终保存每一步的习惯。
这些东西有一种方法。我已经使用了。
在Django提供的管理类中,有所有这些用法。您可以找到其源代码并自己阅读。
DataField确实需要一个对象将其写入数据库。
Foriegnkey确实需要建立的课程。例如
此外,它在Djangoproject的官方网站上提供了丰富的帮助。可以搜索大多数答案。
知识的要点:
桌子关系的实现
一个-to -Multi -ptable关系
MySQL中的一对主要是通过外部键实现的,在Django模型中,它是通过ExourneKeyfield类型实现的。
一个 - 一张桌子关系
MySQL中的一个-to -ONE通过外部密钥和唯一键实现,并通过Django模型中的OneToOneField类型实现。
多站
MySQL中的大多数对主要是通过中间表和唯一键实现的,并通过Django模型中的ManyTomanyfield类型实现。中间手表模型将自动创建。
例子:
关系表中数据的操作
首先确认MySQL索引问题。
输入MySQL,检查索引情况,点击索引。
+----+--————————————————————————————————————————- + - +————————————+
|id |select_type |表|类型|可能的_keys |钥匙|key_len |参考|行|额外|
+----+--————————————————————————————————————————- + - +————————————+
|1 |简单|buzz_keyword_history |参考|in_value,in_idate,search_speed |in_value |182 |const |1514 |使用索引条件;在哪里使用|
+----+--————————————————————————————————————————- + - +————————————+
一组1行(0.00秒)
然后,我查看了MySQL Server的负载,负载很特别。
Python
AVG-CPU:n%nice%系统%iowait%窃取%闲置
2.80 0.00 1.22 0.41 0.00 95.57
SDB 0.00 126.81 3.30 4.95 823.13 1054.05 227.75 0.37 44.44 1.50 1.24
SDA 0.06 215.50 2.46 7.87 599.12 1786.94 231.10 0.81 78.76 1.37 1.37 1.41
memdiska 0.00 0.00 585.63 2638.44 84515.95 21107.53 32.76 0.15 0.05 0.05 0.03 8.54
DM-0.00 0.00 0.00 0.00 0.00 8.00 0.00 4.39 1.13 0.00
然后,我打开了MySQL Server中的慢速查询和SQL语句调试模式,发现slow.log没有特殊的日志...这是一个慢速查询,与此业务无关。
整个页面的静态文件也正常加载,速度也很强大。尽管NGINX中没有强制性缓存...但是对于头发数据,头发数据的加载速度如此之缓慢吗?
最后,我不得不再次怀疑MySQL查询。我们开始计算整个Django Orm语句所消耗的时间。乍一看,这真是太神奇了。消费花了6秒钟...最初,Django的ORM只是帮助我们绘制了SQL语句。老实说,老实说,老实说,以前真的这样想。
Python
run_func.objects.filter(date___gte = d [0],date__lt = d [1],value = value).agregate
我再次阅读了Django Orem模型的介绍。这种Django模型并不容易。他的返回值是QuerySets类型。换句话说,他会将ORM的结果转换为QuerySet结构。由于被封装的原因,我们每次都对ORM特别友好。
解决方案是直接转到Duessing MySQL SQL语句,您选择Python下的MySQLDB,或者您可以使用Django的连接。建议使用Connection,因为每个人的DB地址配置都放置在settings.config中。
以下是在Django中运行原始SQL语句的方法,请参考。
Python
来自django.db导入连接,交易
导入mysqldb
.........
cursor = connection.cursor(cursorClass = mysqldb.cursors.dictcursor)
cursor.execute(SQL,无)
如果您有多个数据库,则可以在连接上选择数据库。
来自django.db导入连接
光标= Connections ['Xiaorui']。光标()
transaction.commit_unless_managed(使用='xiaorui')
最终的结果在本机SQL语句中不到1秒,而使用Django的ORM大约6秒。
我认为django orm应该添加一个其他参数,以使其是否被转换为QuerySet,以便我们根据需求配置。以下是我的Django调试的结果。.您可以看到速度已得到很大提高。
在Internet上看到使用Django的模型和MAKEMIGRATION,迁移命令创建新表并使用它。但是我的数据已经存在,并且已经存储了,并且已经存储了数据,并且无法创建新表格。Django的指示和与模型名称的映射关系可以使Django使用现有表。
如果模型在Django中存在如下:
[python]查看普通副本
来自django.db导入模型
#在这里创建您的模型。
Sciencenews(Models.Model):
id = models.charfield(max_length = 36,primary_key = true)
first_module = model.charfield(max_length = 30,默认值=“ news”)
second_module = model.charfield(max_length = 30,默认值=“最新新闻”)
title = models.charfield(max_length = 300)
作者= models.charfield(max_length = 60,null = true)
publish_date = models.charfield(max_length = 35,null = true)
content = model.textfield(null = true)
crawl_date = model.charfield(max_length = 35,null = true)
from_url = models.charfield(max_length = 350,null = true)
执行数据迁移命令:
[python]查看普通副本
python manage.py makemign
python manage.py迁移
名为show_sciencenews的数据表将在数据库中生成。显示为应用程序名称。我的应用程序名称在此处显示。
我的存储和攀登数据数据的表名是Science_News,我想使用它来使用它而不是创建新表。其名称的名称更改为带有表格的模型的名称,在这里我更改为show_sciencenews。然后使用上述数据迁移命令。目前,可以提示数据表数据表已经存在错误。不合理的模型已使用数据表映射。接下来,您只需要正常使用模型和数据表即可。
null:如果为true,django将将空值存储为数据库中的空值。默认值为false。如果是正确的,则空值将存储为null,default.blank:如果为true,则该字段全是Belank。默认值为false。如果是真的,则该字段允许该字段允许
结论:以上是CTO Notes引入的Django模型的所有内容非常困难。我希望这对每个人都会有所帮助。如果您想了解有关此信息的更多信息,请记住收集并关注此网站。