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.

    ----

  • 相关阅读:
    二叉树
    消息
    线性表 及Java实现 顺序表、链表、栈、队列
    Memcache简介
    redis例子
    redis简介
    Android客户端采用Http 协议Post方式请求与服务端进行数据交互(转)
    jQueryValidate实现重复性验证
    mybatis中${}和#{}的区别
    List转换为数组Array的方法
  • 原文地址:https://www.cnblogs.com/JiangLe/p/9626470.html
Copyright © 2011-2022 走看看