pythonDjango是否支持没有外键关系的自定义SQL和非规范化数据库?

2024-09-27 01:27:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚刚开始学习pythondjango,并有很多使用PHP和MySQL构建高流量网站的经验。到目前为止,让我担心的是Python过于乐观的方法,即永远不需要编写自定义SQL,并且它会自动在数据库中创建所有这些外键关系。在过去的几年里我学到了一件事国际象棋网当你在处理像MySQL这样经常需要被告知应该使用(或避免)哪些索引的东西时,不编写自定义SQL是不可能的,而且外键是一个死刑判决。Percona最强烈的建议是,为了获得最佳性能,我们删除了所有FK。在

在Django中有没有一种方法可以在models文件中实现这一点?在不创建实际数据库FKs的情况下创建关系?或者有没有一种方法可以从数据库级别开始,设计/创建我的数据库,然后让Django对模型文件进行反向工程?在


Tags: 文件django方法数据库sql关系网站mysql
3条回答

如果你不想要外键,那就避免使用

  • models.ForeignKey()
  • models.ManyToManyField(),以及
  • models.OneToOneField()。在

Django将自动创建一个名为id的自动递增int字段,您可以使用该字段来引用单个记录,也可以通过将字段标记为primary_key=True来覆盖该字段。在

还有关于running raw SQL queries on the database的文档。在

允许您从django文件反向工程现有的django表。这只是对你问题的部分回答;)

原始SQL就这么简单:

for obj in MyModel.objects.raw('SELECT * FROM myapp_mymodel'):
    print obj

在模型定义时,数据库的非规范化由您决定。在

也可以将非关系数据库(MongoDB,…)与Django NonRel一起使用

相关问题 更多 >

    热门问题