【问题标题】:How do I retrieve an automated report and save it to a database?如何检索自动报告并将其保存到数据库?
【发布时间】:2011-01-29 06:22:04
【问题描述】:

我有一个可以接收 Python、PHP 或 Perl 脚本的 Web 服务器。我对这些语言中的任何一种都不太了解,但在这三种语言中,Python 似乎最不可怕。它设置了一个 MySql 数据库,我知道足够的 SQL 来管理它并为它编写查询。

我还有一个程序要添加自动错误报告功能。出了点问题,它会向我的服务器发送错误报告。

我不知道如何编写一个 Python 脚本,该脚本将位于 Web 服务器上,当我的程序发送错误报告时,请执行以下操作:

  • 收到错误报告。
  • 将其解析为多个部分。
  • 将其插入数据库。
  • 让服务器给我发一封电子邮件。

据我所知,如果我只知道自己在做什么,这似乎应该不会太难。有人可以给我指出一个网站,该网站解释了我创建这样的脚本所需的基本原则吗?

【问题讨论】:

    标签: python error-reporting


    【解决方案1】:

    我不懂python,所以我给你看php。

    假设您的错误将代码帖子发送到file.php?report=report+is+here

    以下将起作用。

    <?
    
     # code to initialize the database here
     $rc = mysql_connect(...);
    
     if (!$rc)
     {
      die ("Could not connect to the database.");
     }
    
     // probably should do some error checking in a try .. catch
     mysql_execute("
                     INSERT INTO BugTable(report) 
                     VALUES('".addslashes($_REQUEST['report'])."')");
    
     mail("youremail@set.com","Bug Report Recieved", "Recieved the following bug report: {$_REQUEST['report']}");
    
     ?>
    

    关于 php 的一切都在 php.net 上。

    【讨论】:

      【解决方案2】:

      对于 Python,这取决于您的网络托管。一些共享网络主机做 PHP,然后只做 Perl/Python(和 Ruby 等)通过 CGI。使用 Python,您可以使用 CGI 模型或 - 如果您有支持它的主机 - WSGI 来构建 Web 内容。如果您打算使用 Python 和 CGI​​,只需查看 cgi 模块的文档即可。或者,使用web.py。您基本上需要将输入作为特定 URI 上的 HTTP POST 消息读取。 web.py 文档应该描述如何编写。

      对于解析 - 取决于发送的格式。您可以使用 x-www-form-encoded 来传输简单的键值对。我不知道 web.py 的复杂性(我主要使用 Ruby),但它基本上应该为您提供一种获取“请求”对象的方法,用它做一些事情,然后修改一个“返回”对象,其中包含什么回到浏览器。对于 web.py,这是 web.input() - 请参阅 here

      对于任何更复杂的事情,您基本上需要以您选择的格式发布数据 - XML、JSON、神奇的二进制 blob 格式。你如何解析这取决于它是什么。只需 Google 搜索“python xml”或“python json”或其他任何内容,您就会找到它的最新库。

      插入数据库 - 使用 Python 的 mysqldb 库(我使用 Postgres,主要来自 Ruby 和 Java,所以我并不完全熟悉最新的 Python MySQL 库)。

      对于发送电子邮件,您可以只使用 sendmail(在安装了 sendmail 的 Unix 系统上),也可以使用 Python 的 smtplib 将其发送到 SMTP 服务器 - 如果您只是在处理管理员电子邮件,请使用就像一个 Gmail 帐户作为您的 SMTP 服务器,因为您知道它会起作用。哦,web.py 很容易——它有一个内置的mail module。用那个吧,我猜。

      您可能需要考虑安全性 - 这意味着身份验证和表单验证。 RTFM 适用于您使用的任何语言和数据库库,因此您不会对 SQL 注入敞开心扉——对电子邮件也一样。您不想成为垃圾邮件的代理。

      【讨论】:

        猜你喜欢
        • 2016-01-08
        • 2017-03-28
        • 2013-10-14
        • 1970-01-01
        • 2017-03-12
        • 1970-01-01
        • 2014-06-28
        • 2021-02-27
        • 1970-01-01
        相关资源
        最近更新 更多