广告
返回顶部
首页 > 资讯 > 数据库 >python mysql自增字段AUTO_INCREMENT值的修改方式
  • 442
分享到

python mysql自增字段AUTO_INCREMENT值的修改方式

pythonmysql自增字段AUTO_INCREMENT值 2022-05-17 02:05:07 442人浏览 安东尼
摘要

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

在之前得文章中我们说过,如果使用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属性文档链接。希望能给大家一个参考,也希望大家多多支持自学编程网。

您可能感兴趣的文档:

--结束END--

本文标题: python mysql自增字段AUTO_INCREMENT值的修改方式

本文链接: https://www.lsjlt.com/news/9572.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python mysql自增字段AUTO_INCREMENT值的修改方式
    在之前得文章中我们说过,如果使用delete对数据库中得表进行删除,那么只是把记录删除掉,并且id的值还会保持上次的状态。 即删除之前如果有四条数据,删除之后,再添加新的数据,id怎会从5开始。 但是我们显示想让id...
    99+
    2022-05-17
    python mysql 自增字段 AUTO_INCREMENT值
  • mysql修改自增字段自增起始值
    需要修改自增字段的起始值,以使其后续插入的主键id从自定义的值开始自增。先后使用了三种方法,前两种均告失败,第三种成功。 1、直接在navicat里进行设置,结果可以保存但保存无效。本方法失败 2、使用 SQL 语句进行修改,SQL 执...
    99+
    2023-09-02
    mysql 数据库 sql Powered by 金山文档
  • mysql如何修改字段的值
    本篇内容主要讲解“mysql如何修改字段的值”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql如何修改字段的值”吧! 在mys...
    99+
    2022-10-19
  • mysql修改字段名的方法
    这篇文章将为大家详细讲解有关mysql修改字段名的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql修改字段名的方法:【ALTER TABLE 表名 CHANG...
    99+
    2022-10-18
  • MySQL如何修改字段的默认值和空值
    目录mysql修改字段的默认值和空值修改字段默认值修改字段值是否为空MySQL默认值NULL、空值、Empty String的区别如何选择?先说结论区别MySQL修改字段的默认值和空值 修改字段默认值 修改: ALTER...
    99+
    2022-08-29
  • MySQL如何设置某个字段的值自增
    目录设置某个字段的值自增查询自增字段相关参数解释一下这个值得含义设置某个字段的值自增 由于某个业务需要手动操作数据库,并设置主键ID不重复。做个记录 set @rownum=0; select a.id, @r...
    99+
    2022-08-24
  • mysql对字段设置自增的方法
    小编给大家分享一下mysql对字段设置自增的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql对字段设置自增的方法:首...
    99+
    2022-10-18
  • plsql修改字段值的方法有哪些
    在PL/SQL中,有多种方法可以修改字段的值。以下是一些常见的方法:1. 使用UPDATE语句:可以使用UPDATE语句来修改表中的...
    99+
    2023-10-11
    plsql
  • mysql修改字段名称的方法
    这篇文章主要介绍mysql修改字段名称的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!mysql修改字段名称的方法:执行【ALTER  TABLE 表名 CHANGE ...
    99+
    2022-10-18
  • mysql表中修改字段的方法
    这篇文章将为大家详细讲解有关mysql表中修改字段的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在mysql表中,可以使用“ALTER TABLE 表名 CHANG...
    99+
    2022-10-18
  • mysql修改字段为null的方法
    这篇文章将为大家详细讲解有关mysql修改字段为null的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql修改字段为null的方法:1、新建一个查询,使用语句...
    99+
    2022-10-18
  • mysql数据库表增添字段,删除字段,修改字段的排列等操作
    目录一、mysql修改表名二、mysql修改数据的字段类型三、mysql修改字段名四、mysql添加字段1、添加没有约束性的字段2、添加一个有约束性的字段3、在表的第一列添加一个字段4、在数据表中指定列之后添加一个字段五...
    99+
    2022-07-26
    mysql数据库表增添字段 mysql数据库删除字段 mysql数据库修改字段
  • 使用pymysql循环删除重复数据,并修改自增字段偏移值
    创建表:   CREATE TABLE `info` (   `id` tinyint NOT NULL AUTO_INCREMENT,   `name` varchar(20) NOT NULL,   PRIMARY K...
    99+
    2017-09-03
    使用pymysql循环删除重复数据,并修改自增字段偏移值
  • plsql批量修改字段值的方法是什么
    在PL/SQL中,可以使用游标和循环来批量修改字段值。以下是一种常见的方法:1. 声明一个游标,用于查询需要修改的记录:```DEC...
    99+
    2023-09-28
    plsql
  • 修改MySQL字段为首字母大写的方法
    这篇文章将为大家详细讲解有关修改MySQL字段为首字母大写的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。修改MySQL字段为首字母大写的方法:首先用LEFT单独将首...
    99+
    2022-10-18
  • Oracle实现主键字段自增的四种方式
    目录oracle实现主键自增有4种方式:方式一:Identity Columns新特性自增准备工作:方式二:创建自增序列,创建表时,给主键字段默认使用自增序列方式三:创建自增序列,使用触发器使主键自增方式四:创建自增序列...
    99+
    2023-03-13
    oracle中主键自增 oracle数据库怎么设置主键自增
  • MySQL表、字段、库的字符集修改方法介绍
    修改数据库字符集: ALTER DATABASE db_name DEFAULT CHARACTER SET character_name [COLLATE ...];    把表默认...
    99+
    2022-10-18
  • MySql Update修改(替换)某个字段中包含的某个值,根据条件修改替换某个字段的一部分值
    背景: 由于数据迁移和域名变更,Mysql中存储的文件下载地址变更; 要替换某一个字段中的部分内容,可以用update 语句和REPLACE方法,结构如下: UPDATE 表名 SET 字段名= REPLACE( 需要替换值的字段名...
    99+
    2023-08-31
    mysql 数据库 java Powered by 金山文档
  • mysql在已有的表设置自增字段的方法
    这篇文章主要介绍了mysql在已有的表设置自增字段的方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。mysql在已有的表设置自增字段的方法...
    99+
    2022-10-18
  • Oracle实现主键字段自增的方式有哪些
    今天小编给大家分享一下Oracle实现主键字段自增的方式有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们...
    99+
    2023-03-15
    oracle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作