如何定期运行Python脚本将数据导入Django应用程序?

如何定期运行Python脚本将数据导入Django应用程序?,python,django,data-importer,Python,Django,Data Importer,我有一个脚本,可以扫描电子邮件收件箱中的特定电子邮件。这部分工作正常,我能够获得我感兴趣的数据。现在,我想将这些数据添加到Django应用程序中,该应用程序将用于显示信息 我可以在CRON作业上运行脚本来定期获取新信息,但是如何将这些数据输入到Django应用程序中呢 Django服务器运行在Apache/FastCGI下的Linux机器上,如果这有区别的话 [编辑]-在回答Srikar的问题时,您说的“将数据输入Django应用程序”是什么意思? Django应用程序将负责以方便的形式存储数据

我有一个脚本,可以扫描电子邮件收件箱中的特定电子邮件。这部分工作正常,我能够获得我感兴趣的数据。现在,我想将这些数据添加到Django应用程序中,该应用程序将用于显示信息

我可以在CRON作业上运行脚本来定期获取新信息,但是如何将这些数据输入到Django应用程序中呢

Django服务器运行在Apache/FastCGI下的Linux机器上,如果这有区别的话

[编辑]-在回答Srikar的问题
时,您说的“将数据输入Django应用程序”是什么意思?

Django应用程序将负责以方便的形式存储数据,以便通过一系列视图显示数据。因此,该应用程序将包括一个具有适当成员的模型来存储传入数据。我只是不确定你如何连接到Django来创建这些模型对象的新实例,并告诉Django存储它们。

当你说“将这些数据导入Django应用程序”时,你到底是什么意思

我猜您正在使用某种数据库(如mysql)。将从cronjob收集的所有数据插入Django应用程序正在访问的相应表中。还要将此cron数据插入到用户正在访问的相同表中。这样,您的更改将立即反映给使用应用程序的用户,因为他们将从同一个表中访问数据。

当您说“将数据输入DJango应用程序”时,您的确切意思是什么

我猜您正在使用某种数据库(如mysql)。将从cronjob收集的所有数据插入Django应用程序正在访问的相应表中。还要将此cron数据插入到用户正在访问的相同表中。这样,您的更改将立即反映给使用应用程序的用户,因为他们将从同一个表中访问数据。

最佳方法

在django端创建一个视图来处理数据接收,并让脚本在注册到该视图的URL上执行HTTP POST

您也可以从脚本中导入模型等,但我认为这不是一个好主意。

最好的方法是什么

在django端创建一个视图来处理数据接收,并让脚本在注册到该视图的URL上执行HTTP POST


您也可以从脚本内部导入模型等,但我认为这不是一个好主意。

您可以根据需要编写自定义管理命令来加载数据,并通过cron作业运行该命令。你可以参考


您也可以尝试使用现有的loaddata命令,但它会尝试从应用程序目录中添加的fixture加载数据。

您可以根据需要编写自定义管理命令来加载数据,并通过cron作业运行该命令。你可以参考


您也可以尝试使用现有的loaddata命令,但它会尝试从应用程序目录中添加的fixture加载数据。

我想这就是您要查找的。

我想这就是您要查找的。

让您的脚本像这样发送HTTP Post请求。这是图书馆的要求

>>> files = {'report.xls': open('report.xls', 'rb')}

>>> r = requests.post(url, files=files)
>>> r.text
然后在接收端,您可以使用web.py像这样处理信息

x = web.input()
那就用x做你想做的

在POST请求的接收端,导入web并编写处理POST的函数

比如说

    def POST(self):

        x = web.input()

让脚本像这样发送HTTP Post请求。这是图书馆的要求

>>> files = {'report.xls': open('report.xls', 'rb')}

>>> r = requests.post(url, files=files)
>>> r.text
然后在接收端,您可以使用web.py像这样处理信息

x = web.input()
那就用x做你想做的

在POST请求的接收端,导入web并编写处理POST的函数

比如说

    def POST(self):

        x = web.input()

如果您不想使用HTTP来回发送消息,您可以让脚本将电子邮件信息写入.txt文件,然后让django应用程序打开该文件并读取它

编辑:

您可以将CRON作业设置为在上午8点读取电子邮件,然后将其写入文本文件info.txt。代码中的

import time
    if '9' == time.strftime("%H"):
        file = open(info.txt)
        info = file.read()

这将在上午9点到上午10点检查文件。如果您想让它只检查一次,只需将分钟数也添加到if语句中。

如果您不想使用HTTP来回发送消息,您可以让脚本将电子邮件信息写入.txt文件,然后让django应用程序打开该文件并读取

编辑:

您可以将CRON作业设置为在上午8点读取电子邮件,然后将其写入文本文件info.txt。代码中的

import time
    if '9' == time.strftime("%H"):
        file = open(info.txt)
        info = file.read()

这将在上午9点到上午10点检查文件。如果您希望它只检查一次,只需将分钟数也添加到if语句中。

我也做了同样的事情

首先,我的脚本已经在解析电子邮件并将它们存储在数据库中,因此我在settings.py中设置了数据库,并使用
python manage.py inspectdb
基于该数据库创建了一个模型

然后,只需构建一个视图来显示数据库中的信息


如果您的脚本还没有使用db,那么创建一个包含您想要存储的信息的模型,然后强制脚本写入该模型描述的表将非常简单。

我也做了同样的事情

首先,我的脚本已经在解析电子邮件并将它们存储在数据库中,因此我在settings.py中设置了数据库,并使用
python manage.py inspectdb
基于该数据库创建了一个模型

然后,只需构建一个视图来显示数据库中的信息


如果您的脚本还没有使用db,那么创建一个包含您想要存储的信息的模型,然后强制脚本写入该模型描述的表就很简单了。

暂时忘记这是一个Django应用程序。这只是一堆Python代码

这意味着什么