Sco*_*tes 5 python sqlite django postgresql
为什么Django允许您重置postgres和其他DBMS上的序列(AutoID)字段,但不能重置SQLite3?
在中查看sql_flush方法的源代码django/db/backends/sqlite3/base.py,其中有一条注释:
注意:不需要重置自动递增的索引(请参见其他sql_flush()实现)。此时只需返回SQL
我有一些测试,我在其中加载依赖于绝对主键ID的Fixture文件。由于Django不会为SQLite重置自动ID字段,因此这些固定装置无法正确加载。
也许这个片段会有所帮助:
import os
from django.core.management import call_command
from django.db import connection
from django.utils.six import StringIO
def reset_sequences(app_name):
os.environ['DJANGO_COLORS'] = 'nocolor'
buf = StringIO()
call_command('sqlsequencereset', app_name, stdout=buf)
buf.seek(0)
sql = "".join(buf.readlines())
with connection.cursor() as cursor:
cursor.execute(sql)
print("Sequences for app '{}' reset".format(app_name))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
895 次 |
| 最近记录: |