zoukankan      html  css  js  c++  java
  • Django的AutoField字段

    Django是一个机智的框架

      默认情况下Djang会为ORM中定义的每一张表加上一个自增ID列,并且用这个列来做主键;出于一个MySQL-DBA的工作经历我觉得

      Djanog还真是机智;这样么说主要是因为我遇到过许多主从延时的问题,有些比较过分的会延时好几周,通常这些都是因为binlog格式

      为“ROW”但是表上不存在主键引起的。

      

      如果当前网站用的是Django开发的,我想就不会有这种事情发生了吧。

    AutoField

      Django默认的行为就像这样

    class TestModel(models.Model):
        id = models.AutoField(primary_key=True)

      数据库层面对应的SQL如下

    CREATE TABLE `myapp_testmodel` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8

    注意

      如果你想的工增加AutoField列,但是又不指定这个列做为主键的话,是会报错的

    class TestModel(models.Model):
        tid = models.AutoField()

      不显示指定主键,但是又给表增加AutoField列的话就会报错

    assert not cls._meta.auto_field, "Model %s can't have more than one AutoField." % cls._meta.label
    AssertionError: Model myapp.TestModel can't have more than one AutoField.

    ----

  • 相关阅读:
    图解 Kubernetes
    如何构建可伸缩的Web应用?
    2020年软件开发趋势
    3种基础的 REST 安全机制
    为什么你应该使用 Kubernetes(k8s)
    Elasticsearch:是什么?你为什么需要他?
    你在使用什么 Redis 客户端工具?
    ZooKeeper 并不适合做注册中心
    Jmeter(三)_配置元件
    Jmeter(二)_基础元件
  • 原文地址:https://www.cnblogs.com/JiangLe/p/9626470.html
Copyright © 2011-2022 走看看