将 PyQt 与 sql orm 库(sqlalchemy、peewee 等)集成



PyQt有一些不错的功能,如QSqlTableModel和QSqlRelationalTableModel,但是,它不包含ORM功能,我讨厌在我的程序中使用原始SQL语句。将SQL ORM库(如Sqlalchemy(集成到PyQt SQL设施的最佳方法是什么?目前我能想到的唯一解决方案是在 SqlAlchemy 中构建我的对象模型,并使用 QSqlDatabase 手动执行编译的 SQL 语句。有没有更好的方法可以做到这一点?有没有办法,比如说,为使用QSqlDatabase的SqlAlchemy构建一个自定义后端/适配器?其他ORM库,如Peewee也很好。

https://docs.sqlalchemy.org/en/13/core/engines.html?highlight=create_engine#sqlalchemy.create_engine

使用"模拟"策略创建一个假引擎,将所有编译的 sql 语句重定向到 QSqlDatabase 以执行。

似乎有一个问题:需要与真实数据库交互的功能将不起作用,例如在创建之前检查表是否存在。 此外,这似乎不适用于会话 API,任何对commit()flush()的调用都会导致NotImplementedError

最新更新