QtSql vs MySQLdb vs SQLAlchemy

时间:2012-03-19 22:01:12

标签: python mysql pyqt

我正在开发一个PyQt程序,它很快就会从xml类型的后端切换到本地MySQL服务器上托管的后端。我一直在试图阅读这三个选项中的每一个,但认为最好问你们这些神。

我目前使用MySQLdb执行MySQL的经验并且一直在使用,主要是因为对其他两种方法的存在一无所知。简而言之,每个人的优点/缺点是什么,你会选择哪一个?干杯!

2 个答案:

答案 0 :(得分:18)

我不是太神,但我确实有一些意见。我在Python中使用SQL的主要经验是使用Django。

解决方案对您愿意承诺的事项很重要。如果你想坚持使用Qt库和PyQt库,那么请使用Q​​tSql。如果你想快速构建你的应用程序,但又需要一些依赖项,那么我就选择SQLAlchemy。您可能会遇到asker of this question之类的问题,然后您需要引入更多库或拔掉头发。

所以,以一个不错的列表样式:

MySQLdb的

  • pro:Pure SQL
  • 骗子:丑陋
  • con:要求你写SQL
  • con:要求您管理光标,不进行任何缓存,参数化等...
  • con:无法在不重写所有数据库代码的情况下切换到其他数据库后端

VERDICT:不要将此用于您投入生产的任何内容

QtSQL

  • pro:仅使用Qt库
  • pro:将返回Qt对象,因此它将与Qt的标准小部件集成
  • pro:可以使用Qt支持的任何数据库后端
  • con:仍然要求你编写SQL

VERDICT:如果您想减少更少的UI代码和更多的数据库代码,请选择此项

SQLAlchemy的

  • pro:所有数据库逻辑都可以用Python代码编写(因为它是一个ORM)
  • pro:支持许多数据库后端
  • con:可能需要一些额外的配置才能让Qt
  • 运行良好

VERDICT:如果您想编写更少的数据库代码,请选择此项,并且可以解决一些API问题。


此外,不要担心任何选择的性能 - 它们应该大致相同,并且大部分时间都花在I / O上。

答案 1 :(得分:3)

我知道有点晚了,但我建议你看看Camelot(http://www.python-camelot.com/)。它将PyQt和SQLAlchemy集成在一起,因此您可以编写较少的UI代码和数据库代码。