QtSql vs MySQLdb vs SQLAlchemy

Cry*_*ite 5 python mysql pyqt

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

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

for*_*all 18

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

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

所以,在一个很好的列表样式:

MySQLdb的

  • 亲:纯SQL
  • 骗局:丑陋
  • con:要求你编写SQL
  • con:要求你管理游标,不做任何缓存,参数化等...
  • con:无法重写所有数据库代码,无法切换到不同的数据库后端

VERDICT:不要将它用于任何你投入生产的东西

QtSQL

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

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

SQLAlchemy的

  • pro:所有数据库逻辑都可以用Python代码写出来(因为它是一个ORM)
  • pro:支持许多数据库后端
  • con:可能需要一些额外的配置来使Qt能够很好地工作

VERDICT:如果你想编写更少的数据库代码,那就选择这个,并且可以解决一些API问题.


此外,不要担心任何选择的性能 - 它们应该大致相同,并且大部分时间将用于I/O.

  • 我甚至不会让它影响你太多,SQLAlchemy本身不是Qt.您始终可以对模型进行子类化以处理自定义后端,或者只是手动从sqlalchemy向Standard模型提供数据. (2认同)
  • 刚刚让SQLAlchemy工作了.简直不敢相信我曾经使用过MySQLdb,这是一个废话.这就像5行代码! (2认同)