我的编程空间,编程开发者的网络收藏夹
学习永远不晚

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

短信预约 信息系统项目管理师 报名、考试、查分时间动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

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

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

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

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

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

下载Word文档

猜你喜欢

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

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

mysql修改字段值的方法是什么

要修改数据库表中字段的值,可以使用UPDATE语句。语法如下:UPDATE 表名 SET 字段名 = 新值 WHERE 条件;例如,如果要将表中name字段值为’John’的记录的age字段值修改为30,可以使用如下语句:UPDATE
mysql修改字段值的方法是什么
2024-04-20

mysql怎么修改一个字段的值

要修改一个字段的值,你可以使用UPDATE语句。以下是一个示例代码,用于修改一个字段的值:UPDATE 表名SET 字段名 = 新值WHERE 条件;其中,"表名"是要修改的表的名称,"字段名"是要修改的字段的名称,"新值"是要设置
mysql怎么修改一个字段的值
2024-02-29

mysql如何修改自增列的初始值

要修改MySQL表中自增列的初始值,可以使用ALTER TABLE语句来实现。以下是修改自增列初始值的步骤:首先,使用DESCRIBE语句查看表的结构,确认自增列的名称和表名。DESCRIBE table_name;然后,使用ALTER T
mysql如何修改自增列的初始值
2024-04-20

mysql怎么修改自增列的初始值

要修改MySQL表中自增列的初始值,可以使用ALTER TABLE语句。以下是一个示例:ALTER TABLE table_name AUTO_INCREMENT = new_initial_value;在上面的语句中,将table_na
mysql怎么修改自增列的初始值
2024-05-14

sql修改字段值的方法是什么

要修改字段的值,可以使用UPDATE语句。语法如下:UPDATE 表名SET 字段名 = 新值WHERE 条件;例如,要将表中id为1的记录的name字段的值修改为"John",可以这样写:UPDATE 表名SET name =
sql修改字段值的方法是什么
2024-05-21

plsql修改字段值的方法有哪些

在PL/SQL中,有多种方法可以修改字段的值。以下是一些常见的方法:1. 使用UPDATE语句:可以使用UPDATE语句来修改表中的字段值。语法如下:```sqlUPDATE table_nameSET column_name = new_
2023-10-11

mysql数据库表增添字段,删除字段,修改字段的排列等操作

目录一、mysql修改表名二、mysql修改数据的字段类型三、mysql修改字段名四、mysql添加字段1、添加没有约束性的字段2、添加一个有约束性的字段3、在表的第一列添加一个字段4、在数据表中指定列之后添加一个字段五、mysql删除字段
2022-07-26

使用pymysql循环删除重复数据,并修改自增字段偏移值

创建表:  CREATE TABLE `info` (   `id` tinyint NOT NULL AUTO_INCREMENT,   `name` varchar(20) NOT NULL,   PRIMARY KEY (`id`)  ) ENGI
使用pymysql循环删除重复数据,并修改自增字段偏移值
2017-09-03

Oracle实现主键字段自增的四种方式

目录oracle实现主键自增有4种方式:方式一:Identity Columns新特性自增准备工作:方式二:创建自增序列,创建表时,给主键字段默认使用自增序列方式三:创建自增序列,使用触发器使主键自增方式四:创建自增序列,插入语句(inse
2023-03-13

plsql批量修改字段值的方法是什么

在PL/SQL中,可以使用游标和循环来批量修改字段值。以下是一种常见的方法:1. 声明一个游标,用于查询需要修改的记录:```DECLARECURSOR c_records ISSELECT column1, column2 -- 列出需
2023-09-28

编程热搜

目录