9

我一直在构建业务数据库应用程序,例如财务、库存和其他业务需求应用程序。我打算转向 Python。最好的工具是什么。我需要做主、交易表格、处理(后端)、报告和诸如此类的事情。数据库将是 postgress 或 mysql。由于我是 Python 新手,我知道除了 Python 之外我还需要 ORM 和框架。我的应用程序与网站无关,但如果需要,也可能需要通过网络完成。

如何选择工具组合的初始设置?

4

6 回答 6

12

如果我是你,我可能会先看看基于 Django 的基于 Web 的解决方案是否能解决问题。如果您需要更好的外观和感觉,请将 jQuery 添加到组合中。如果它提供的功能太少,请选择 PyQt。如果您有很多非常小的应用程序,请选择多种技术。下面,您会找到我(有些冗长)对此建议的推理。

Webapp 与桌面应用程序

一年前,我们有一个业务数据库,需要一个前端。我们必须决定前端使用什么技术。我们考虑过:

  1. PyQt
  2. 基于 Web(查看此处了解 Python 的 Web 框架概述)

从我们的角度来看,PyQt 的优势:

  • 以前使用Qt的C++ 经验,从中我们知道 Qt 适合该任务。
  • 包括所有必要的工具。
  • 轻松开发富客户。

然而,我们决定不使用 PyQt,而是使用基于 Web 的解决方案。原因是:

  • 对前端的要求是适度的,并且可以在浏览器中轻松完成(主要是报告,一些用于输入数据或运行功能的表单)。
  • 应用程序(以及新版本、错误修复等)的部署要容易得多,因为一切都只发生在受控环境中的服务器上。
  • 访问控制/身份验证/权限是“免费的”,因为它是服务器(在我们的例子中 Apache 使用 Active Directory 身份验证)和浏览器的一部分,这对我们很重要。
  • 该应用程序无论如何都需要服务器连接,并且不必在客户端存储任何内容。

简而言之:在受控部署环境中具有大量功能的功能丰富的前端可能更容易使用 Qt 实现。对于我们的轻量级前端,基于服务器的解决方案对我们来说似乎更好。

哪个网络框架?

既然我们已经决定了一种技术,我们就必须选择一个框架。我们进行了一些研究,并详细研究了两种选择:

  1. 姜戈
  2. 由CherryPy作为调度程序(将 http 请求与功能和所有相关内容匹配)、Mako作为生成网页的模板库、SQLAlchemy作为 ORM 和用于客户端功能的jQuery组成的软件堆栈。

我们评估了这两种选择,最后选择了第二种。这个决定是由我们真正的“轻量级”前端需求(许多非常小的应用程序)驱动的。一堆软件——我们可以根据需要混合和匹配——对我们来说似乎更好。我们可以在不需要 Web 前端的情况下重用 SQLAlchemy,我们可以在没有模板库和 ORM 的情况下使用 CherryPy,等等。然而,在许多其他情况下,我会选择 Django 而不是这个堆栈。

总结一下:

  • 一个大而复杂的应用程序-> PyQt
  • 一组相对相似、简单明了的报告、表格等,具有相同的外观-> Django
  • 一组相对多样化的事物,在要求和使用的技术或在其他情况下重用某些技术时存在很大差异 -> 根据需要混合使用技术
于 2009-06-20T09:37:32.520 回答
4

如果我是你,我会从django开始。

于 2009-06-20T02:40:48.830 回答
1

如果您的应用程序将来需要在桌面和 Web 上运行,您可以考虑使用可分发服务器创建基于 Web 的应用程序。这些事情很容易用 Python 以简单的方式和更强大的方式(例如使用 Twisted)来完成。

如果仅桌面是您的方向,那么确实正如 Alex 所说 - 选择 PyQt。它非常易于使用,并通过多种数据库绑定提供了非常强大的 GUI 功能。

至于数据库——你习惯使用哪一个?例如,如果您是 MySQL 专家,那么首先检查一下 Python 的 MySQL 绑定是明智的。对于 ORM,绝对可以尝试 SQLAlchemy。

也许问题中的更多细节可以帮助提供更完整的答案。


更多细节(供您评论):

如果 PostgreSQL 是您的方向,那么 Python 将PyGreSQL作为绑定。它是开源的,就像 Python 本身一样,所以你应该对用户免费的应用程序没有任何问题。至于 Python 是正确的选择,我认为是。考虑到许多强大的网站都运行 Python(YouTube、Reddit,甚至某些应用程序的 Google)。Python 还用于几个大容量应用程序,例如源代码控制系统 Mercurial 和 Bazaar,以及邮件列表管理器 mailman。

于 2009-06-20T06:13:06.943 回答
1

正如 Boudewijn Rempt 在这里所写,“对于创建 [[NON-web]] 数据库应用程序的最简单方法,您可能想看看PyQt ”。这是他 6 年前写的,但我认为今天也是完全正确的。特别是pyqt4 的QtSql模块,它支持 MySQL、PostgreSQL 和其他几个数据库。

于 2009-06-20T02:56:40.687 回答
0

仅供参考,对于 PyQT,这本书有第 15 章的数据库,看起来不错。这本书有一些数据和视图等。我读过它,我认为这很值得你花时间:)

于 2009-06-20T08:02:24.477 回答
0

由于我不喜欢任何可用的框架,我决定自己写一些东西。也许你想看看Pylax。它内置于 GTK 中,并使用嵌入式 Python 编写脚本。目前,后端是 SQLite。

于 2018-02-09T13:28:59.367 回答