Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我的数据库已经有20行,但当我保存新行时,它们的id从1开始_Python_Django_Database - Fatal编程技术网

Python 我的数据库已经有20行,但当我保存新行时,它们的id从1开始

Python 我的数据库已经有20行,但当我保存新行时,它们的id从1开始,python,django,database,Python,Django,Database,现在,我已经将数据导入到了包含20行的数据库表中 当我对该表使用save()方法时,它们以pk=1开始保存数据,导致错误,并在pk=21时实现 尽管我的模型中的id列是默认的,但我不会覆盖它。第一个(可能也是最好的)选项是从导入的数据中删除id值,并允许Django管理自动递增的PK值()。如果您正在调用.save(),请不要在模型实例中包含ID值,这样可以解决您的问题。如果id值不是None,则可以在此处停止同步 如果这不适用于您的用例(例如,您需要导入的数据的ID值保持不变),第二个也是更复

现在,我已经将数据导入到了包含20行的数据库表中

当我对该表使用save()方法时,它们以pk=1开始保存数据,导致错误,并在pk=21时实现

尽管我的模型中的id列是默认的,但我不会覆盖它。第一个(可能也是最好的)选项是从导入的数据中删除id值,并允许Django管理自动递增的PK值()。如果您正在调用
.save()
,请不要在模型实例中包含ID值,这样可以解决您的问题。如果
id
值不是
None
,则可以在此处停止同步

如果这不适用于您的用例(例如,您需要导入的数据的ID值保持不变),第二个也是更复杂的选项是使用Django命令
sqlsequencereset
(),该命令将返回需要执行的sql语句,以将自动递增的PK值重置为当前最大ID+1。在django应用程序中,可以运行以下代码来执行这些sql语句:

from django.db import connections
from django.core.management.color import no_style

# 'default' is the name of the database which may need to change
# execute the sequence_reset_sql command for all models in a specific 'APP_NAME'
sequence_sql = connections['default'].ops.sequence_reset_sql(
    no_style(), [apps.get_model(['APP_NAME'], model) for model in models])

# execute the sql statements
with connections['default'].cursor() as cursor:
    for sql in sequence_sql:
        cursor.execute(sql)

^注意:这是针对Django 1.11的

您能分享您的型号代码吗?请提供完整的错误消息,以及一个错误提示。