如何在Django中重置db?我收到命令'reset'not found错误

Pre*_*rem 84 python database django reset

遵循这个Django by example tutotrial:http://lightbird.net/dbe/todo_list.html

教程说:

"这改变了我们的表格布局,我们必须要求Django重置并重新创建表格:

manage.py reset todo; manage.py syncdb"

但是,当我跑步时manage.py reset todo,我收到错误:

$ python manage.py reset todo                                       
- Unknown command: 'reset'
Run Code Online (Sandbox Code Playgroud)

这是因为我使用的是sqlite3而不是postgresql吗?

有人能告诉我重置数据库的命令是什么吗?

命令:python manage.py sqlclear todo返回错误:

$ python manage.py sqlclear todo    
CommandError: App with label todo could not be found.    
Are you sure your INSTALLED_APPS setting is correct?
Run Code Online (Sandbox Code Playgroud)

所以我在settings.py中将'todo'添加到了我的INSTALLED_APPS,然后python manage.py sqlclear todo再次运行,导致出现此错误:

$ python manage.py sqlclear todo                                      
- NameError: name 'admin' is not defined
Run Code Online (Sandbox Code Playgroud)

rob*_*lep 136

reset已被flushDjango 1.5 取代,请参阅:

python manage.py help flush
Run Code Online (Sandbox Code Playgroud)

  • 幸运的是,[有人把它移回](https://github.com/gregmuellegger/django-reset)到1.5 :) (5认同)
  • 不幸的是,这不适用于manage.py reset <appname>等个别应用.它会导致错误:CommandError:Command不接受任何参数 (4认同)

Lis*_*saD 31

看起来"同花顺"的答案对某些情况有效,但并非所有情况都适用.我不仅需要刷新数据库中的值,还需要正确地重新创建表.我还没有使用迁移(早期)所以我真的需要删除所有表.

我发现删除所有表的两种方法都需要核心django之外的其他方法.

如果您使用Heroku,请使用pg:reset删除所有表:

heroku pg:reset DATABASE_URL
heroku run python manage.py syncdb
Run Code Online (Sandbox Code Playgroud)

如果你可以安装Django Extensions,它有办法完成重置:

python ./manage.py reset_db --router=default
Run Code Online (Sandbox Code Playgroud)

  • 我得到:`未知命令:'reset_db' (5认同)
  • @jonalv,你必须先安装[django-extensions](https://github.com/django-extensions/django-extensions). (4认同)
  • 此外,您需要将它包含在`settings.py`中的`INSTALLED_APPS`下. (4认同)

aen*_*rew 20

与LisaD的答案类似,Django Extensions有一个很好的reset_db命令可以完全删除所有内容,而不是像"flush"那样截断表格.您必须指定路由器,因此它可能如下所示:

python ./manage.py reset_db --router=default

仅仅刷新表并没有修复删除对象时发生的持久性错误.执行reset_db修复了问题.


Vai*_*pta 15

如果你正在使用Django 2.0那么

python manage.py flush 
Run Code Online (Sandbox Code Playgroud)

将工作

  • 这也适用于Django 1.11. (3认同)

小智 8

如果要清理整个数据库,可以使用: python manage.py flush 如果要清理Django应用程序的数据库表,可以使用: python manage.py migrate appname zero


小智 8

使用django 1.11,只需从migrations每个应用程序的文件夹中删除所有迁移文件(除了所有文件__init__.py).然后

  1. 手动删除数据库.
  2. 手动创建数据库.
  3. python3 manage.py makemigrations.
  4. python3 manage.py migrate.

而且,您的数据库已完全重置.


Thu*_*pal 6

python manage.py flush
Run Code Online (Sandbox Code Playgroud)

删除旧的数据库内容,

不要忘记创建新的超级用户:

python manage.py createsuperuser
Run Code Online (Sandbox Code Playgroud)