在之前得文章中我们说过,如果使用delete对数据库中得表进行删除,那么只是把记录删除掉,并且id的值还会保持上次的状态。

即删除之前如果有四条数据,删除之后,再添加新的数据,id怎会从5开始。

但是我们显示想让id从2开始,应该怎么做呢?

这个时候我们就要学习去修改数据表的一些属性值了,而这个属性值就是AUTO_INCREMENT。

首先我们要知道怎么查看这个属性的值。

例如我建了一张表:

create table t4(id int auto_increment primary key, num int) engine=innodb default charset=utf8;

那么接下来我可以通过命令来查看AUTO_INCREMENT的值:

通过命令我们好像没找到这个AUTO_INCREMENT属性啊,why?这是因为我们刚建好表,还没有数据,所以这个属性还没开始被赋值。

那么我们就插入几条数据

insert into t4(num) values(11);

insert into t4(num) values(12);

insert into t4(num) values(13);

通过上面的sql语句插入三条记录。

在这里我们可以猜想一下,AUTO_INCREMENT属性的值应该是表示的什么?是记录最后记录的数据是第几条?还是表示下一条记录是第几条?

我们可以再次通过命令 show create table t4 \G;来验证一下。

此时我们可以找到AUTO_INCREMENT这个属性,并且它的值等于4,这个是不是就是说明AUTO_INCREMENT记录的值表示对于下一条记录的id值。

通过delete table t4; 来把t4里面的记录清空。

然后再调用show create table t4 \G;命令

可以发现表的信息并没有因为表里的信息被删除而改变,这样的话,我们要是想让添加的数据id从2开始不就会不行了吗?

but,我们可以修改表的信息。

通过alter table t4 AUTO_INCREMENT=2;这个命令我们可以修改AUTO_INCREMENT属性的值,将其修改为2,那么我们再添加数据,id不就从2开始了嘛。

最后,我们在验证一下

返现结果如我们要的一样,ok,完美解决。

补充知识:django 中model踩的坑之AttributeError: type object ** has no attribute 'objects'及Field defines a relation

django 中model踩的坑之AttributeError: type object ** has no attribute 'objects'及Field defines a relation with model **, which is either not installed, or is abstract.

1. AttributeError: type object ** has no attribute ‘objects'

作者目前使用的是django1.8.1版本,在一次新项目的启动中,在编译查询代码的时候(如下),总是抛出如上错误。有人告诉我那就自己在model中重新引入objects,即objects = Model.manager(),然而问题依然没有得到解决。

queryset = CompanyAuthRecord.objects.all()

最后发现原来把abstract = True注释掉就可以完美的解决这个问题,至于当初为什么会加这一属性,好像是在引入此model的时候,总是引入不成功,也是被别人告诉加入此属性就可以了。事实确实解决那个引入问题,然而当初并没有去研究为什么要用他,应了那句话:欠下的,迟早要还!

class CompanyAuthRecord(models.Model):

id = models.UUIDField(primary_key=True, default=uuid.uuid4, db_column='c_id')

company_seal = models.OneToOneField(CompanySeal, verbose_name='企业印章id', null=True,

db_column='c_company_seal_id')

add_by_id = models.UUIDField(verbose_name='添加人id', db_column='c_add_by_id', null=True, default=None)

add_dt = models.DateTimeField('添加时间', db_column='c_add_dt', auto_now_add=True)

class Meta:

db_table = 't_company_auth_record'

verbose_name = '企业认证状态记录表'

# abstract = True

ordering = ["add_dt"]

default_permissions = ()

附关于abstract=True的官方解释:

2.Field defines a relation with model **, which is either not installed, or is abstract.

解决了上述问题后,又有这样的问题出现,难道真要上演程序员修水管的景象?几经周折,原因又出现在被关联model的app_lable ='seal'属性上,如下注释即可解决问题。至于原因:django要求是这样的,你可以不设置这个参数,如果要设置请与你的app名称保持一致。而我就是犯了这样的错误。

class CompanySeal(models.Model):

id = models.UUIDField(primary_key=True, default=uuid.uuid4, db_column='c_id')

add_by_id = models.UUIDField(verbose_name=u'添加人id', db_column='c_add_by_id', null=True, default=None)

add_dt = models.DateTimeField(verbose_name=u'添加时间', db_column='c_add_dt', auto_now_add=True)

class Meta:

# app_label = 'seal'

db_table = 't_company_seal'

verbose_name = '企业电子印章数据表'

ordering = ["add_dt"]

default_permissions = ()

以上经验希望能帮到出现同样问题的你,问题其实本身不算问题,只怪我们太low,多看文档和源码才是提升之道。附关于Meta属性文档链接。希望能给大家一个参考,也希望大家多多支持脚本之家。

python自增_python mysql自增字段AUTO_INCREMENT值的修改方式相关推荐

  1. python为mysql设置id自增长_python mysql自增字段AUTO_INCREMENT值的修改方式

    在之前得文章中我们说过,如果使用delete对数据库中得表进行删除,那么只是把记录删除掉,并且id的值还会保持上次的状态. 即删除之前如果有四条数据,删除之后,再添加新的数据,id怎会从5开始. 但是 ...

  2. 12.从入门到精通:Python字典,创建字典,访问字典的值,修改字典,删除字典,字典键的特性,字典内置函数和方法

    12.从入门到精通:Python字典,创建字典,访问字典的值,修改字典,删除字典,字典键的特性,字典内置函数和方法 Python字典 创建空字典 访问字典里的值 修改字典 删除字典元素 字典键的特性 ...

  3. Python FastAPI 框架 操作Mysql数据库 增删改查

    2 比 1 更容易理解,可以先看2(单文件级别) 1.FastAPI 框架 操作Mysql数据库(项目多文件级别) FastAPI 可以使用任何您想要的关系型数据库. 在这里,让我们看一个使用着SQL ...

  4. 关于MySQL中date字段默认值为“0000-00-00 00:00:00“导致MyBatisPlus无法正常list()而报系统异常错误码500的问题

    今天在SpringBoot整合MyBatisPlus的时候,使用自动代码生成的功能,对User表生成了entity.mapper.service代码,之后编写测试类调用userService.list ...

  5. 修改mysql表的字段名_mysql中修改表字段名/字段长度/字段类型详解

    在mysql中我们对数据表字段的修改命令只要使用alter就可以了,下面我来给大家详细介绍mysql中修改表字段名/字段长度/字段类型等等一些方法介绍,有需要了解的朋友可参考. 先来看看常用的方法 M ...

  6. python数据预处理_Python数据预处理——缺失值、重复值

    一.缺失值处理 isnull( ) .fillna( ) .dropna( ) (1)查看 缺失 查看数据集缺失,返回每列的缺失个数 df.isnull().sum() 查看某字段有缺失的行 df[d ...

  7. python中构造方法 id自增_Python+MongoDB自增键值的简单实现

    背景 最近在写一个测试工具箱,里面有一个bug记录系统,因为后台我是用Django和MongoDB来实现的,就遇到了一个问题,要如何实现一个自增的字段. 传统的关系型数据库要实现起来是非常容易,只要直 ...

  8. Python封装函数实现MySQL数据库增删改和数据存储

    目录 一.背景介绍 二.封装数据库访问函数 (1)封装数据库连接函数dbconnect (2)封装SQL查询函数SQLQuery (3)封装SQL命令函数SQLCommand 三.主函数调用 1.定义 ...

  9. python自增_Python的自增运算与Python变量的浅析

    一.关于Python的自增运算 学了C/C++后再学习Python,不自觉地就打出了自增运算符++,但是发现Python解释器不认识,查了下资料,发现Python中没有这个运算符.这里暂时不探讨自增运 ...

最新文章

  1. pyqt制作电子钟表
  2. 使用Github搜索开源项目
  3. DL之VGG16:基于VGG16迁移技术实现猫狗分类识别(图片数据量调整→保存h5模型)
  4. TCP/IP协议的SYN攻击
  5. codeigniter钩子的使用
  6. 《Effective C#》Item 21:用委托实现回调
  7. flex 颜色16进制对照表
  8. 大佬教你如何写出更好的CSS,分享web前端资料
  9. C语言实现推箱子game
  10. VC++6显示行号插件+VC6LineNumberAddin.dll+注册机
  11. win7 安装ArcMap10.7提示下载Microsoft.NET Framework 4.5,安装过程中提示:安尚未成功,根据当前系统时钟或签名文件中的时间戳验证时要求的证书不在有效期内。
  12. 群晖NAS安装cpolar内网穿透套件(群晖6.X版)
  13. 揭开WebDriver面纱
  14. 长安大学转计算机专业,长安大学本科学生转换专业管理办法
  15. 邮箱安全再成热点 金笛企业邮件系统保障企业用户通信安全
  16. 【枚举】Broken Necklace
  17. 智多星大数据分析云平台实践
  18. Chrome 调试 websocket
  19. 学习笔记:网络层,IP包头,路由器配置
  20. word文档及其历史版本的备份

热门文章

  1. html动态网页效果代码_教你制作网页的第一步
  2. wamserver怎么把mysql找回来_将php连接wampserver自带的MySQL数据库 所遇到各种问题解决办法...
  3. wordpress 删除自定义字段
  4. 【机器视觉学习笔记】直方图的绘制及直方图均衡化(C++)
  5. centos配置ssh免密码登录后仍要输入密码的解决方法
  6. 让窗体获得焦点,一定会有您用到的时候
  7. VMware 虚拟机占用磁盘空间
  8. Android卷一全文 第一章 阅读前的准备工作
  9. javascript学习系列(14):数组中的indexOf方法
  10. 手动封装js的call和apply和bind和typeof和new方法