python - 在 Django 表中设置 AUTOINCREMENT 值

标签 python mysql django

我在 mysql 中有下表:

CREATE TABLE `portal_asset` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `asset_id` int(11) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=1000000 DEFAULT CHARSET=utf8;

我如何在 Django 中创建同一张表?到目前为止,我有以下内容,但不确定如何设置 AUTO_INCREMENT 值 --

class PortalAsset(models.Model):
    id = models.IntegerField(primary_key=True)
    asset_id = models.IntegerField(unique=True)
    class Meta:
        db_table = u'portal_asset'

如何将 AUTO_INCREMENT 值设置为从 1000000 开始?相当于:

alter table portal_asset AUTO_INCREMENT=1000000;

最佳答案

您可以使用 RunSQL 在迁移中执行必要的 SQL 操作:

migrations.RunSQL("ALTER TABLE portal_asset AUTO_INCREMENT=1000000;")

如果您还没有运行任何迁移,您可以将其添加到您的第一次迁移中,以确保在设置新值之前不会插入任何行。否则,您必须在新迁移中添加此操作。您可以使用 python manage.py makemigrations --empty <yourappname> 创建一个新的空迁移.

关于python - 在 Django 表中设置 AUTOINCREMENT 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34279652/

相关文章:

python - 如何让django QuerySet会动态过滤?

php - 更新查询 MySQL PDO 时的情况

mysql - MySQL 全文搜索的替代方案

javascript - Jquery Django 添加字段(或隐藏和显示)以及字段的值

jquery - json.parse 给出未捕获的语法错误 : Unexpected Token (Django json serialized queryset)

python - Django Rest框架绕过嵌套关系中的实体

python - AES key 移入配置文件生成 "AES key must be either 16, 24, or 32 bytes long"错误

python - 确定异步套接字服务器中客户端的主机名

mysql - 通过批处理文件启动 MySQL 脚本文件

python - 搭建学习平台——将练习与类(class)联系起来——单字段还是外键?