gpt4 book ai didi

mysql - Django - 通过 python 运行 mysql 恢复

转载 作者:行者123 更新时间:2023-11-29 14:01:44 24 4
gpt4 key购买 nike

我正在开发一个 Django 项目,其中包含大量表和数据。我们仍处于开发模式,因此我们正在进行大量测试。我希望现在能够授予一些用户访问该项目的权限,以便使用虚假数据进行操作。我花时间设置了所有虚假数据,以便当他们打开网络应用程序时,它已经填充了处于各种状态的记录 - 因为他们可能会在生产时找到系统。

我的目标是让他们可以尝试一切,然后有一个大的“重置”按钮,他们可以点击它,这将使整个事情回到原点 - 可以这么说。基本上,它会把所有的记录和数据恢复到我把数据交给他们时的样子。这样,他们就可以闲逛、测试,然后重新开始并进行更多测试。

编辑 - 我应该说这只是一个测试人员,因此重置不会影响其他任何人

我在 Django 中快速查看了运行 mysql 恢复命令的情况,但它挂起。我的观点如下:

def reset_db(request):
reset = "mysql -v -u garfonzo -pMyPassword dbName < db_reset.sql"
os.system(reset)
return HttpResponse("success?")

它应该做的就是将数据库恢复到原始状态。但是,它挂起。使用 -v 命令,我看到它所做的最后一件事是:

...a whole bunch of MySQL queries.... then
--------------
/*!40000 ALTER TABLE `auth_permission` ENABLE KEYS */
--------------

--------------
UNLOCK TABLES
--------------

--------------
DROP TABLE IF EXISTS `auth_user`
--------------

它只是坐在这里......什么都不做,然后我的网络应用程序没有响应。我必须终止该进程并重新开始(手动重置)。

我想我的问题是双重的:

  1. 这是为用户实现重置按钮的最佳方式吗?如果没有,有什么更好的方法?
  2. 如果这是实现此目的的最佳方法,为什么代码会挂起?

感谢您的帮助。

最佳答案

我建议您为所有初始数据提供固定装置,并为用户提供运行syncdb的 View ,这将使用您的初始数据再次重置所有内容。不过我自己还没有尝试过。

from django.core.management import call_command

def reset_db(request):
call_command('syncdb', interactive=False)

关于mysql - Django - 通过 python 运行 mysql 恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14964162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com