4

这真的是一个“原谅我的无知”的问题,如果它不符合要求,请道歉。

我想开发一个相当简单的数据库应用程序。它将基于桌面和轻量级,所以我很高兴 SQLite 就足够了。我还决定使用 Qt 和 pyside。

浏览大量的教程,我不断遇到 sqlalchemy 和 exlixir(和 Camelot)。我基本上只是想知道在 Qt 中使用 sqlalchemy(和长生不老药)相对于基本 QSql 有什么优势?如果我不使用这样的东西,我会错过什么。

我知道这是基本的,但在我开始自学过程之前,我只想在脑海中弄清楚这一点。

4

2 回答 2

7

基本上,您在这里有 3 个选项。

QtSql

QtSql 是 Qt 中用于处理 SQL 数据库的单独模块。

优点:

  • 与 Qt 集成可能更容易

缺点:

  • 很难学
  • 为 C++ 制作,需要一些冗余代码
  • 需要在您的项目中再添加一个 Qt 模块
  • 文档看起来很糟糕

sqlite3模块

这是 Python 标准库中的一个模块,用于处理 SQLite 数据库。

优点:

  • 非常容易使用
  • 代码相当简洁
  • 没有外部依赖

缺点:

  • 您必须编写 SQL 查询

SQLAlchemy ORM

SQLAlchemy 使用类似于使用普通类的数据库。

优点:

  • 对象关系映射器:公开面向对象的接口并为您进行 SQL 查询
  • 设置好表信息后,使用数据库是一种纯粹的乐趣

缺点:

  • 陡峭的学习曲线

这是我的结论:
如果您对编写 SQL 查询感到满意并且不必对数据库做很多工作,请使用 sqlite3。如果你不介意花一些时间来学习一些很棒的东西,那就去 SQLAlchemy。

关于你提到的其他项目:
Elixir 似乎已经死了,而 SQLAlchemy 现在已经内置了它的功能,可能更好。
Camelot 很奇怪......我不会使用它。

于 2012-05-21T07:45:59.090 回答
1

我处于类似的情况......在 PyQt 学习曲线的早期,希望从事一些与数据库相关的项目。我遇到了一些听起来与您相同的线程......他们谈论 sqlalchemy、elixir 或 Project Camelot 以及 PyQt4。不过,就明确的好处而言,它们似乎都没有真正深入细节。显然,它假设好处对读者来说本质上是显而易见的;)在大多数情况下......我收集到的是,一旦你的项目达到一定程度的复杂性,你很可能或多或少无论如何,使用适用的 Qt4 对象编写了一些用于数据库处理的基本抽象,并且您将提前使用 sqlalchemy/elixir 而不是“自己动手”。

这是我在不久的将来做出的决定:我计划使用 PyQt 提供的 DB 东西完成前几个基本项目。在我对此感到满意之后,我可能会返回并使用 sqlalchemy、elixir 等进行返工。

于 2012-05-21T04:00:01.187 回答