如何“重置”PostgreSQL数据库?

7
我正在尝试将我的Django项目移植到生产环境中,为此我从使用SQLite转移到了Postgres。在开发环境中,每当我更改模型或任何会显著改变数据库设置的内容时,我都会将我的SQLite文件直接删除并运行syncdb以创建一个新的空文件(可能是不好的做法)。现在我正在使用Postgres,并希望做到同样的事情,而不必实际删除数据库。基本上,我想知道是否有一种方法可以完全清空或清除数据库,然后只需运行syncdb并重新开始。

如果您有任何其他的建议,也欢迎提出,因为我对此非常的新手。


在这里阅读答案:https://dev59.com/3nA75IYBdhLWcg3wYH7I#21247009 - catavaran
3个回答

8
你可以使用 flush 命令。只需运行以下命令即可:
python manage.py flush

那我可以对现有的模型进行更改并添加新的模型,然后只需使用flush命令和syncdb命令吗? - david
什么是“初始数据” - david
在使用 flush 时,您不需要使用 syncdb。Flush 会清除数据库中的数据,但不会清除结构。 - ruddra
1
链接已损坏。 - Kulasangar
是的,它应该适用于每个表格,无论数据库如何。 - ruddra

5

如果你的数据库中有初始数据,你可以使用dumbpdata命令:

python manage.py dumpdata > initial_data.json

针对特定的应用程序运行:

python manage.py dumpdata <app_name> > initial_data.json

接下来运行flush命令以清理您的数据库:

python manage.py flush

最后一步,运行loaddata命令将初始数据加载到您的数据库中,并通过运行createsuperuser命令创建超级用户。

python manage.py loaddata initial_data.json
python manage.py createsuperuser

1
什么是“初始数据”?我试图删除所有数据,而不是特定的应用程序数据。 - david

0

如果刷新不起作用,您可以删除整个数据库。

进入Windows命令行。 如果服务器是“postgres”,数据库名称为“mydb”,则运行:

  1. C:\> psql -U postgres

  2. 您将看到一个postgres-#提示符。接下来要关闭连接,请运行以下命令:

    SELECT * FROM pg_stat_activity WHERE pg_stat_activity.datname='mydb'; SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydb';

  3. 一次性删除数据库:DROP DATABASE mydb;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接