【问题标题】:A Python Web Framework that makes it easy to connect and use a Legacy Oracle DB?一个可以轻松连接和使用旧版 Oracle 数据库的 Python Web 框架?
【发布时间】:2012-03-07 11:56:12
【问题描述】:

我希望获得一些关于 Web 应用程序框架的建议(强烈偏爱 Python,但 Ruby 也可以),我可以学习这些建议来帮助我最终解决我们组织中的需求。

我想创建一个图表/图形应用程序,它可以帮助我们以新的方式更好地分析我们拥有的大量数据以发现趋势等,而无需为每个不同的场景投入大量时间。

第一部分是根据我们的数据创建图表的应用程序。我们已经使用了诸如 Crystal Reports 之类的工具,但我希望创建的是具有更多商业智能以及以一次性/临时方式将数据链接在一起的能力。

以下是我希望完成的一些细节:

  • 用户级别控制/权限。谁可以在哪些领域进行 CRUD。
  • 与旧版 Oracle 数据库链接并从 Oracle 执行尽可能多的查询(只读)
  • 根据来自 Oracle 数据库的数据创建一些聚合统计数据(每月、每天、每 15 分钟一次),这些数据被操纵以提供 Oracle 数据库中不可用的不同类型的统计数据。这些可能会存储在本地数据库中。计划任务是我正在考虑的那种事情,因此本地数据会定期自动更新。
  • 使用 Google Chart Tools 或 Highcharts 等图形库将数据链接到 HTML。漂亮的图表生成起来并不繁琐(对我或服务器而言),并提供更新/过滤图表结果的控件,例如使用滑块限制时间片或通过下拉列表过滤结果。
  • 必须在 Windows Server 上运行。

我查看了一些框架,每个框架都有我喜欢的东西,但作为 Web 框架世界的新手,我不确定我是否意识到我可能会遇到的“陷阱”是我的观察迄今为止。请注意其中一些可能不是事实,我试图研究这些问题,但将 webapps 连接到 Oracle 是一种边缘案例,不是很多人这样做,所以信息不像 PostgreSQL 或 MySQL 那样多产。

  • Web2Py – 这似乎是对新开发人员最友好的,这对我很有吸引力。在一天左右的时间里,我能够启动并运行一个基本站点并将其连接到一些虚拟数据以输出一些基本的谷歌图表工具。我开始研究连接到 Oracle 服务器,发现虽然它似乎对“遗留”连接类型有相当不错的支持,但有必要从遗留数据库中手动定义每个模型。对我来说,这将是有问题的。几百个表,每个表有 30-150 列,这意味着大量的“手工编码”一些非常乏味的东西。最重要的是,表被添加/模式每年更改 2-3 次,这将是一场管理噩梦。我真正喜欢 web2py 的一件事是它内置了一个调度程序,因此定期从 oracle 中提取必要的数据将相当简单。

  • Django – 一旦我发现在 Web2Py 中进行所有建模将是什​​么 PITA,我立即查看了 Django 以了解它必须提供什么。它对模块创建有更好的支持,提供了一个基于遗留数据库创建模型的工具。该文档甚至承认它并不完美,但它可能会让我达到 90% 并进行一些手动调整,这可能会非常有帮助。不幸的是,它没有任何官方的,只有非常基本的对 Oracle 的支持。

  • Flask – 我之所以关注 Flask,是因为我在使用 SQLAlchemy 时对这些东西有很好的体验。我花在 Flask 上的时间没有我花在 Web2Py 或 Django 上的时间那么多,但是我看到的东西看起来不错。在通过 webapp 文档进行另一次搜索后,我决定我应该咨询一些专家的建议,然后来这里发帖。 正如我所提到的,我使用了 SQLAlchemy,并且非常喜欢我能够相当轻松地为我的模型定义基本骨架并告诉 alchemy 从 Oracle 加载数据的方式,我认为我仍然需要添加关系,但如果这就是我所要做的一切补充说我领先于游戏。

我知道有些人用 SQLAlchemy 替换了 Django ORM,但我想知道这是一场持续的艰苦战斗,还是值得认真进行的事情?

我的偏好和能力更倾向于 Python 框架,但我已经完成了一些 Ruby 工作,并且不会反对可以完成所有这些工作的真正出色的 Ruby 框架。

除此之外,我欢迎任何澄清请求以及任何 cmets。就像我说的那样,我对 Web 框架还很陌生,实际上真的很喜欢学习新事物,但是我想把我的时间花在高效地启动这个项目上,而不是深入研究发现我应该选择一个不同的框架。

【问题讨论】:

    标签: python django web-applications sqlalchemy web2py


    【解决方案1】:

    主要关注的是connection to oracle dbrendering chartsDB- 最好的选择是 SQLAlchemy,因为它支持 oracle 比其他 ORM 好得多。

    如果你想要render charts 的pythonic 库,你可以使用numpyscipy 图表,有支持google charts api 的python 库。如果您正在构建一个与google charts 交互的设备,请查看请求requests

    当谈到 web 框架时,如果 ORM 被默认替换,你几乎会被formswsgi 和额外的组件所遗漏。在这种情况下,我将回退到支持RESTflaskArmin 编写的ArminFlaskwerkzeug 的创建者。

    你也有flask admin 扩展名。

    【讨论】:

    • oracle 位绝对是难题中最难的部分,据我所见link 是最好的处理方法,到目前为止,对我来说理想的框架是使用 SQLAlchemy 的 web2py 之类的简单框架作为后端。我查看了 python 图表工具,它们似乎主要用于生成用于发布的图像图表 + 一些其他巨大的功能(科学 clacs、统计),而不仅仅是图表。我已经开始查看 Flask 的更多信息,它非常好,但似乎比 web2py 之类的东西要多一些,不过我将不得不更多地研究它。
    【解决方案2】:

    一旦我发现在 Web2Py 中进行所有建模将是什​​么 PITA,我立即查看了 Django 以了解它必须提供什么。它对模块创建有更好的支持,提供了一个基于遗留数据库创建模型的工具。

    我假设您说的是 Django 的 inspectdb 工具。注意,web2py 包含一个similar tool——它是为与 PostgreSQL 一起使用而创建的,但应该可以与其他数据库一起使用,只需稍作调整(即,将数据库驱动程序更改为 Oracle)。如果您需要任何帮助,请随时通过mailing list 提问。

    【讨论】:

    • 我的意思是 Django 提供的 inspectdb 工具,我不知道你为 web2py 链接的工具,这对我来说很有趣,我一定会考虑调整它以适应我的目的。感谢您提供的信息,web2py 中包含的调度内容对我来说是一个非常有吸引力的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 2020-08-10
    相关资源
    最近更新 更多