首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >重置Django PostgreSQL数据库的简单方法?

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

Stack Overflow用户
提问于 2016-01-03 11:28:23
回答 7查看 44.1K关注 0票数 31

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

  1. 删除迁移文件
  2. 输入psql命令提示符。连接到数据库。删除模式公共级联,创建模式公共;
  3. 不幸的是,步骤2似乎删除了我的用户角色和权限,所以我回到psql命令promt并重新创建了这些命令。
  4. 步骤2还意味着我需要在psql命令提示符中运行以下命令:将模式的使用权限授予public;将create on schema public授予public;
  5. 步骤2还删除了我创建的标准Django用户,因此我需要重新创建这些
  6. python manage.py makemigrations && python manage.py迁移

目前,我正在对我的模型进行更改,并测试每个更改。我没有任何需要保存的数据。当迁移不起作用时,是否有比上述更简单的方法来重置数据库?

我至少希望用其他的东西来代替步骤2,这样我就可以跳过步骤3-5。

EN

回答 7

Stack Overflow用户

发布于 2016-01-03 11:34:51

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

代码语言:javascript
运行
复制
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运行迁移。

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

票数 48
EN

Stack Overflow用户

发布于 2020-01-15 18:57:25

我成功地“重置了我的django postgreSQL数据库”(同时又没有丢失数据)。

更新我的models.py,然后使用./manage.py makemigrations./manage.py migrate是不可能的,因为我需要重命名的表循环地指向彼此。Django不能“自动神奇地”完成上述任务。

所以我选择了备份我的数据。冲水。删除表格。更新我的models.py文件。修改我创建的(json)备份(使用./manage.py datadump > fileName.json),以反映已更新的列名/表名。然后,我使用./manage.py migrate./manage.py makemigrations重新创建了数据库。然后,我使用./manage.py loaddata fileName.json将备份加载回数据库的新创建表中。

我所采取的具体步骤:

  1. 首先,我备份了我的服务器/VM。
  2. ./manage.py e.py dumpdata > db.json
  3. ./manage.py .刷新
  4. 选择“是”注意,这将删除您的所有数据!
  5. 删除--myDataBaseName中的所有表--
  6. 删除迁移文件夹
  7. 对model.py文件进行更改(如果有)
  8. ./manage.py迁移
  9. ./manage.py . --myAppName--
  10. ./manage.py迁移--myAppName--
  11. 进入db.json并删除与contenttype相关的stuffz。您还可能需要删除(在某些情况下,在步骤12之后手动删除) db.json中与db.json相关的条目。将修改后的db.json保存为db_new.json,这样您就不会丢失原来的备份,以防事情变得混乱,并且需要将一切恢复到原来的状态!
  12. ./manage.py加载数据db_new.json
票数 9
EN

Stack Overflow用户

发布于 2020-08-12 09:40:48

用Python

代码语言:javascript
运行
复制
from django.db import connection

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

然后,

代码语言:javascript
运行
复制
python manage.py migrate
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34576004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档