【问题标题】:Reasons for using sqlalchemy in Qt在 Qt 中使用 sqlalchemy 的原因
【发布时间】:2012-05-20 20:56:40
【问题描述】:

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

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

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

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

【问题讨论】:

  • 这是 Qt,不是 QT。 QT 是 QuickTime ;)
  • 感谢您指出这一点。
  • 我认为这将归结为对 SqlAlchemy 的特定需求。并不是你会权衡差异的东西,因为你必须使用另一个项目来支持模型......或者......使用 SqlAlchemy 后端滚动你自己的 Qt 模型。

标签: sqlite qt sqlalchemy pyside


【解决方案1】:

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

QtSql

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

优点:

  • 与 Qt 集成可能更容易

缺点:

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

sqlite3模块

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

优点:

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

缺点:

  • 您必须编写 SQL 查询

SQLAlchemyORM

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

优点:

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

缺点:

  • 陡峭的学习曲线

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

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

【讨论】:

  • 我真的不能同意“陡峭的学习曲线”这一点。在使用 SQLAlchemy 之前,我只使用了另一种 ORM(Django 内置的 ORM)并在大约两天内实现了我的基本应用程序功能(从 pip-3.3 install SQLAlchemy 开始)...... QtSql 的 Pro 将是 SQL 视图,但是这些是用 SQLAlchemy + PyQt/PySide 在不到两个小时的工作(字面意思)中用 Python 重写的。 SQLAlchemy 的 HUGE pro 是我清楚的 sep。在 DBMS 抽象和主要 ORM 之间。声明式是纯粹的天才。即使有巨大的查询集,它也非常快。
【解决方案2】:

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

在不久的将来,我的决定如下:我计划使用 PyQt 提供的数据库资料,完成前几个基本项目。在我对此感到满意之后,我可能会返回并使用 sqlalchemy、elixir 等进行返工。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-27
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 2014-08-14
    • 2018-08-08
    • 1970-01-01
    相关资源
    最近更新 更多