QtSql против MySQLdb против SQLAlchemy - PullRequest
5 голосов
/ 20 марта 2012

Я разрабатываю программу PyQt, которая вскоре переключится с бэкэнда типа xml на программу, размещенную на локальном сервере MySQL.Я пытался прочитать о каждом из трех вариантов, но подумал, что лучше спросить вас, ТАК богов.

Мой текущий опыт выполнения MySQL с MySQLdb в настоящее время и использует его главным образом из-за незнания о существовании двух других методологий.Короче говоря, каковы некоторые плюсы / минусы каждого из них и что бы вы выбрали?Ура!

Ответы [ 2 ]

18 голосов
/ 20 марта 2012

Я не ТАК бог, но у меня есть некоторый вклад. Мой основной опыт работы с SQL на Python связан с Django.

Решение зависит от того, что вы готовы совершить. Если вы хотите использовать библиотеки Qt и только библиотеки PyQt, то используйте QtSql. Если вы хотите просто создать приложение быстро, но добавить еще несколько зависимостей, я бы остановился на SQLAlchemy. Вы можете столкнуться с некоторыми проблемами, такими как , задавая этот вопрос , и тогда вам нужно будет добавить больше библиотек или вырвать свои волосы.

Итак, в хорошем стиле списка:

MySQLdb

  • pro: чистый SQL
  • con: Гадкий
  • con: требует написания SQL
  • con: требует управления курсором, не выполняет кэширование, параметризацию и т. Д. *
  • con: невозможно переключиться на другой сервер базы данных без перезаписи всего кода вашей базы данных

ИСПРАВЛЕНИЕ: не используйте это ни для чего, что вы бы положили в производство

QtSql

  • pro: использует только библиотеки Qt
  • pro: вернет объекты Qt, поэтому он будет интегрирован со стандартными виджетами Qt
  • pro: может использовать любой сервер базы данных, который поддерживает Qt
  • con: все еще требует написания SQL

VERDICT: выберите это, если вы хотите написать меньше кода пользовательского интерфейса и больше кода базы данных

SQLAlchemy

  • pro: вся логика базы данных может быть записана в коде Python (поскольку это ORM)
  • pro: поддерживает множество баз данных
  • con: может потребоваться дополнительная настройка, чтобы все работало хорошо с Qt

VERDICT: выберите этот вариант, если вы хотите писать меньше кода базы данных, и будет неплохо решить некоторые проблемы с API.


Кроме того, не беспокойтесь о производительности при любом выборе - все они должны быть примерно эквивалентны, и большая часть времени будет потрачена на ввод / вывод.

3 голосов
/ 31 августа 2012

Немного поздно, я знаю, но я предлагаю вам взглянуть на Камелот (http://www.python -camelot.com / ).Он интегрирует PyQt и SQLAlchemy вместе, так что вы можете писать как меньше кода пользовательского интерфейса, так и кода базы данных.

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