使用Web API的Python桌面程序

时间:2011-04-14 02:06:08

标签: python api desktop-application

我有一个非常随机的客户要求基于桌面的程序的请求,该程序可以从基于Web的API(例如Google Analytics,SEOMoz和其他类似服务)检索信息。然后,他们希望将部分或全部结果存储在中央位置。他们说他们根本不想要一个Web应用程序,但他们确实希望能够将数据存储在LAN上的“服务器”(读取,桌面客户端的服务器版本)上。该程序应该能够在Windows上运行。 Linux和OS X支持很不错。

我有一些编程经验,并且熟悉Python,所以我在考虑使用它。我的问题是我不确定局域网上客户端/服务器之间的通信以及客户端和基于Web的API之间的通信。

1)这甚至可能吗?如果是这样,在API集成和网络通信/任何好例子上寻找资源的好地方是什么?

2)有关要注意什么的任何建议/提示(例如,常见错误,主要安全问题)?

3)哪种方式比我上面概述的更好?

4)数据库,有什么好的选择?我想让它尽可能独立,或多或少自包含(依赖于最少量的已安装软件)。

感谢所有输入!

1 个答案:

答案 0 :(得分:1)

  1. 是的,urllib,urllib2和urlparse是用于读取/来自URL的核心python库。我会建议PyQt用于gui框架(pyGTK,wxWidgets和tkinter也没关系,它们在你提到的三个操作系统上运行良好)。 PyQt包含您需要的所有内容,而不涉及任何其他库。它包括网络访问控制,用于URL解析和构建的QUrl以及用于显示数据的大量GUI工具。

  2. 除了4 [/ p>

  3. 中的[1]外,没有任何规范
  4. 见1关于PyQt。但是你最终要做的是制作你想要访问的URL(包括所有get / post参数),发送数据,监听数据,解析数据,放在db中。客户端只需查询db,获取结果,过滤/排序/管理将在gui代码中完成。 QtDeclarative可能是一个很好的选择,允许用户自己编写查询(思考但从未实现过),你也可以执行它。

  5. 我会建议postgres,mysql或任何db,关系或不关系(参见mongodb,但不要认为PyQt支持它,但你可以很好地使用任何python lib和pyqt)。然后,您可以在那里存储数据,让客户端查询数据并让客户端坐在服务器上,具有查询站点和插入数据的额外功能尽管这可能更适合作为获取数据和插入的cli工具db(如果需要,可以在cron作业上运行它)。

  6. 您只需要开发客户端代码和数据库架构。 [1]记住db可以有多个客户端,用户可以直接连接到数据库服务器。唯一真正的警告是将服务器配置为仅在局域网上侦听以接收客户端,并正确设置用户权限。这与将webapp连接到db在美观上有所不同。您只是授予更多用户和客户端访问权限。

    你最大的问题应该是弄清楚如何处理GUI编程的乏味:P