切换数据库API会丢失或获得什么? (从pywin32和pysqlite到QSql)

时间:2009-03-03 20:45:15

标签: python qt sqlite pyqt4 pywin32

我正在编写一个Python(2.5)GUI应用程序,它执行以下操作:

  • 从Access导入到Sqlite数据库
  • 将ui表单设置保存到Sqlite数据库

目前我使用pywin32读取Access,使用pysqlite2 / dbapi2读取/写入Sqlite。

但是,在更新Sqlite数据库时,某些Qt对象不会自动转换为Python或Sqlite等效项。例如,QDate,QDateTime,QString等引发错误。目前我正在维护转换功能。

我调查了使用QSql,它似乎克服了投射问题。此外,它还能够连接到Access和Sqlite。这两个好处将出现,以允许我重构我的代码以使用更少的模块而不维护我自己的转换函数。

我正在寻找的是一份重要的副作用,性能增益/损失,功能增益/损失的列表,这些都是SO社区因切换到QSql而经历的。

到目前为止我遇到的一个功能损失是无法使用QODBC驱动程序使用Access函数(例如,'table LCASE(fieldname)from tablename'失败,'SELECT FORMAT(fieldname,“General Number”)也是如此表名')

1 个答案:

答案 0 :(得分:1)

在处理数据库和PyQt UI时,我将使用类似于模型 - 视图 - 控制器模型的东西来帮助组织和简化代码。

查看模块

  • 使用/保存必要的任何QObject 用于UI
  • 包含简单的函数/方法 用于更新QTGui对象,如 以及从GUI提取输入 对象

控制器模块

  • 将执行所有数据库交互
  • 这里有更复杂的代码

通过使用MVC,您不需要依赖QT库,并且在将QT与Python链接时会遇到更少的问题。

所以我猜我的建议是继续使用pysqlite (因为这是你习惯的),但重构你的设计一点,所以处理QT库的唯一方法是UI。从GUI的描述来看,它应该相当简单。