Что я потеряю или получу от переключения API баз данных? (от pywin32 и pysqlite до QSql) - PullRequest
1 голос
/ 03 марта 2009

Я пишу приложение с графическим интерфейсом Python (2.5), которое выполняет следующие действия:

  • Импорт из доступа к базе данных Sqlite
  • Сохраняет настройки формы пользовательского интерфейса в базе данных Sqlite

В настоящее время я использую pywin32 для чтения Access и pysqlite2 / dbapi2 для чтения / записи Sqlite.

Однако некоторые объекты Qt не автоматически приводятся к эквивалентам Python или Sqlite при обновлении базы данных Sqlite. Например, QDate, QDateTime, QString и другие вызывают ошибку. В настоящее время я поддерживаю функции преобразования.

Я исследовал с помощью QSql, который, кажется, преодолевает проблему приведения. Кроме того, он может подключаться как к Access, так и к Sqlite. Эти два преимущества появятся , что позволит мне реорганизовать мой код, чтобы использовать меньше модулей и не поддерживать мои собственные функции преобразования.

То, что я ищу, это список важных побочных эффектов, прироста / снижения производительности, функциональных выгод / потерь, которые испытало любое сообщество SO в результате перехода на QSql.

Одна потеря функциональности, которую я испытал до сих пор, - это невозможность использования функций доступа с использованием драйвера QODBC (например, «SELECT LCASE (fieldname) from tablename» завершается неудачно, как и «SELECT FORMAT (fieldname,« General Number ») из имя_таблицы ')

1 Ответ

1 голос
/ 04 марта 2009

При работе с базами данных и пользовательскими интерфейсами PyQt я буду использовать нечто похожее на модель модель-представление-контроллер, чтобы упростить организацию и упростить код.

Просмотр модуля

  • использует / содержит любые необходимые объекты QObject для пользовательского интерфейса
  • содержит простые функции / методы для обновления вашего QTGui Object, как а также извлечение ввода из графического интерфейса объекты

Модуль контроллера

  • выполнит все взаимодействия с БД
  • чем более сложный код живет здесь

Используя MVC, вам больше не нужно полагаться на библиотеку QT, и вы столкнетесь с меньшими проблемами, связывая QT с Python.

Так что, я думаю, я предлагаю продолжить использование pysqlite (поскольку это то, к чему вы привыкли), но немного реорганизовать свой дизайн, поэтому единственная вещь, касающаяся библиотек QT, - это пользовательский интерфейс. Из описания вашего графического интерфейса это должно быть довольно просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...