我有一个Django项目,我正在研究它有很多表和数据。我们仍处于开发模式,因此我们正在进行大量测试。我希望能够让一些用户现在访问该项目,以便使用虚假数据进行播放。我花时间设置所有假数据,这样当他们打开网络应用程序时,它已经填充了各种状态的记录 - 因为他们可能在生产时找到系统。
我的目标是允许他们玩弄所有东西,但是然后有一个大的“重置”按钮,他们可以击中,这将使整个事情回到原点 - 可以这么说。基本上,它会将所有记录和数据恢复到我用数据交给他们时的方式。通过这种方式,他们可以捣乱,测试,然后重新开始并进行更多测试。
编辑 - 我应该说它只有一个测试人员,所以重置不会影响其他任何人
我在Django中快速浏览了一个运行mysql restore命令的命令,但是它正在挂起。我的观点如下:
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`
--------------
它只是坐在这里......什么都不做,然后我的网络应用程序没有响应。我必须终止进程并重新开始(手动重置)。
我想我的问题有两个:
感谢您的帮助。
答案 0 :(得分:1)
我建议您为所有初始数据提供灯具,并为用户提供运行syncdb的视图,这将使用您的初始数据重新设置所有内容。但是我自己没试过。
from django.core.management import call_command
def reset_db(request):
call_command('syncdb', interactive=False)
答案 1 :(得分:0)
这是我用来恢复数据库的命令。确保您在unix终端上。 mysql -u(用户名)-p(密码)(数据库名称)