【问题标题】:Python database application framework and toolsPython数据库应用框架和工具
【发布时间】:2010-11-04 11:32:40
【问题描述】:

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

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

【问题讨论】:

    标签: python frame


    【解决方案1】:

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

    Web 应用与桌面应用

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

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

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

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

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

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

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

    哪个网络框架?

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

    1. Django
    2. CherryPy 作为调度程序(将http请求与功能和所有相关内容匹配)、Mako 作为模板库以生成网页、SQLAlchemy 作为 ORM 和 @ 987654328@ 用于客户端功能。

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

    总结一下:

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

    【讨论】:

    • 斯蒂芬感谢那个帖子。我的情况是前面的要求通常不是很复杂。我会花时间评估 Django。
    【解决方案2】:

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

    【讨论】:

    • +1:它可以捆绑在桌面上运行,就像它是一个独立的应用程序一样。谷歌“Django 桌面”有很多提示。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

      至于 DB - 您习惯使用哪一个?例如,如果您是 MySQL 专家,那么首先检查 Python 的 MySQL 绑定是明智的。对于 ORM,一定要试试 SQLAlchemy。

      也许问题中的更多细节有助于提供更全面的答案。


      更多细节(供您评论):

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

      【讨论】:

      • 嗯,我目前在 RDBMS 方面的技能是在 Oracle 中,但我计划使用 Postgress,因为它支持后端程序。该应用程序的性质是中小型企业应用程序。但目前这些应用程序也应该是 Web 类型的。它将主要是检索和操作数据。一般只有 1 个问题......我希望我选择 Python 没有错,因为我必须从 0 开始,但我想开发对客户免费的应用程序。应用程序很少是桌面的,但也大多是多用户的。
      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 2023-03-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-17
          • 2014-12-26
          • 1970-01-01
          • 2011-09-13
          • 1970-01-01
          相关资源
          最近更新 更多