Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在后台Django中制作一个改变数据库的代码_Python_Sql_Django - Fatal编程技术网

Python 如何在后台Django中制作一个改变数据库的代码

Python 如何在后台Django中制作一个改变数据库的代码,python,sql,django,Python,Sql,Django,我正在制作一个淘汰式投票网站。人们登录,投票给他们最不喜欢的参与者,在一天结束时,投票最多的人变得不活跃。几乎每件事都能正常工作:登录、投票等等。但我不知道如何制作一个程序,在不需要用户进入网站的情况下,检查最多的投票并更改数据库,以在特定时间更改参与者的状态 我甚至不知道该把密码放在哪里。我如何确保它一直在运行?在我看来,views.py只在用户访问URL时起作用,因此,如果在重新编译投票时没有人访问该网站,那么它将不起作用,所以这是不可能的。我可以在Django项目之外编写一个脚本来执行此操

我正在制作一个淘汰式投票网站。人们登录,投票给他们最不喜欢的参与者,在一天结束时,投票最多的人变得不活跃。几乎每件事都能正常工作:登录、投票等等。但我不知道如何制作一个程序,在不需要用户进入网站的情况下,检查最多的投票并更改数据库,以在特定时间更改参与者的状态

我甚至不知道该把密码放在哪里。我如何确保它一直在运行?在我看来,views.py只在用户访问URL时起作用,因此,如果在重新编译投票时没有人访问该网站,那么它将不起作用,所以这是不可能的。我可以在Django项目之外编写一个脚本来执行此操作,然后使用nohup运行它,但这样我就失去了模型符号,不得不进行手动查询,另外,我相信有一个更好的,更Django的方法来做到这一点


这个问题有什么解决办法吗?或者你可以给我指个方向?

答案是django芹菜。它适用于需要带条件运行的任何任务。查看一下您在芹菜中使用的beats功能

如果您的场景只是根据投票数更新数据库,您可以直接使用cron

编写一个脚本,检查投票并更改数据库中用户的状态。在cron中安排它在一天/投票结束时运行一次

将脚本放在外部人员无法访问的目录中

脚本每天23:30运行一次的cron条目:


30 23***python/root/scripts/status\u change\u script.py

您可以使用芹菜来实现此目的。芹菜的周期性任务-

拜访


通常,这类数据是从数据库查询的,而不是由脚本更改的。对你的用例的查询不应该很复杂或昂贵。除了我推荐的芹菜之外,看看这些
@periodic_task(run_every=crontab(minute=0, hour=0))# run every midnight
def check_voting():
      mn_vote = Voting.objects.filter(year='2015').order_by('-voting').first()
      mn_vote.is_win=True
      mn.save()