重置Django PostgreSQL数据库的简单方法?

时间:2016-01-03 11:28:24

标签: django postgresql

我能够使用以下步骤重置Django PostgreSQL数据库:

  1. 删除迁移文件
  2. 输入psql命令提示符。连接数据库。 drop schema public cascade; create schema public;
  3. 遗憾的是,第2步似乎删除了我的用户角色和权限,所以我回到了psql命令promt并重新创建了这些。
  4. 步骤2还意味着我需要在psql命令提示符中运行以下命令:将schema public上的用法授予public; 将模式公共创建公开给公众;
  5. 第2步还删除了我创建的标准Django用户,因此我需要重新创建这些
  6. python manage.py makemigrations&& python manage.py migrate
  7. 我目前正在对我的模型进行更改并测试每个更改。我没有任何需要保留的数据。当迁移不起作用时,是否有比上述更简单的方法来重置数据库?

    我至少想用其他东西替换第2步,以便我可以跳过第3-5步。

5 个答案:

答案 0 :(得分:20)

最简单的方法可能是重新创建整个数据库。在Ubuntu中,它看起来像这样:

sudo su postgres
psql
drop database your_database_name;
create database your_database_name with owner user_you_use_in_django;
\q
exit

那就是它。你有干净的数据库。要准备好,您必须使用python manage.py migrate运行迁移。

如果您单独处理项目,可以删除并重新创建迁移(如果需要)。

答案 1 :(得分:2)

使用Python

from django.db import connection

with connection.cursor() as cursor:
    cursor.execute("DROP SCHEMA public CASCADE;")
    cursor.execute("CREATE SCHEMA public;")

然后

python manage.py migrate

答案 2 :(得分:0)

如果您使用的是docker / composer,请先发出docker-compose down,然后再发出migrate

答案 3 :(得分:-1)

我不明白为什么您认为需要删除迁移或数据库。迁移的全部意义在于他们以前所未有的为基础;你永远不需要删除并重新开始。每次进行更改时都要做makemigrations,并且一系列的迁移应该始终有效。

稍后,您可能希望将一组迁移压缩为一个,为了速度,本机再次支持。但永远不要删除已经运行的迁移。

答案 4 :(得分:-1)

首先,您需要从项目中删除迁移文件。然后使用终端窗口运行psql数据库(确保与数据库和项目相关的所有内容都应关闭,以免任何db实例正在运行)。 然后点击以下链接,从终端窗口https://www.postgresqltutorial.com/postgresql-drop-database/

中删除数据库

希望这可以回答问题。我本人也遇到了同样的问题,此步骤已解决了该问题。开发愉快!