Найти - Пользователи
Полная версия: PyQt4 + psycopg2
Начало » GUI » PyQt4 + psycopg2
1 2
FroL
Здравствуйте. Мне необходимо сделать графический интерфейс для работы с БД Postgres 8.4. Выбрал механизм PyQt4+psycopg2.
Встал вопрос как загрузить данные в виджет и в какой. Если с виждетом все понятно - QTableWidget, то вот как загружать данные в него дело сложное.
Во -первых: если загружать сразу все данные через цикл (а данных будет много), то приложение будет тормозить;
Во-вторых: если загружать данные частично, то надо разработать механизм отслеживания прокрутки колесика мышки, загрузки и выгрузки данных.
Подскажите в правильном ли я направлении думаю?
FroL
Спасибо за ответ, но через модель QSqlDatabase я не могу подключиться, из-за отсутствия драйвера QPSQL. Поэтому реализую подключение к БД через psytcopg2.
Поэтому ваши ссылки мне не подходят.
reclosedev
FroL
но через модель QSqlDatabase я не могу подключиться, из-за отсутствия драйвера QPSQL
Для Win в PyQt и в PySide они есть по умолчанию.
Для Ubuntu
sudo apt-get install libqt4-sql-psql
Для других возможно вручную компилировать нужно, в гугле должно быть на эту тему что-то.

Можно это и не использовать, конечно, но велосипедов много написать придется (про QTableWidget правда сразу забудьте, только Model-View если данных много).
FroL
reclosedev
про QTableWidget правда сразу забудьте, только Model-View если данных много
А почему забыть? Я загружаю 15000 строк по 10 столбцов в tableWidget и это у меня занимает 1,5 - 2 секунды. Так чем же плох TableWidget?
reclosedev
FroL
Я загружаю 15000 строк по 10 столбцов в tableWidget и это у меня занимает 1,5 - 2 секунды.
Сомневаюсь, что пользователь хотел бы ждать 1.5 секунды, а потом листать 15 тыс. строк.

FroL
Так чем же плох TableWidget?
Если не смотреть на то, что не используются возможности Qt по работе с БД, то например, для вставки данных в QTableWidget нужны QTableWidgetItem'ы - а это оверхед на создание лишних объектов.

Еще обсуждение попадалось
http://lists.trolltech.com/qt-interest/2007-05/thread01132-0.html
FroL
reclosedev
Если не смотреть на то, что не используются возможности Qt по работе с БД, то например, для вставки данных в QTableWidget нужны QTableWidgetItem'ы - а это оверхед на создание лишних объектов.
Я согласен что не используются возможность Qt для работы с БД.
Но я не могу собрать этот драйвер QPSQL под МСВС. Поэтому ищу обходные пути.
reclosedev
FroL
МСВС
Мобильная система Вооружённых Сил? Ого

FroL
Поэтому ищу обходные пути.
Если уже почти все написали и устраивает, то и ладно. А так, можно было бы например свой драйвер написать, обертку над psycopg2 (не уверен, что это просто). Или Model-View использовать: унаследоваться от QAbstractTableModel, и для модели для чтения, 5 методов переопределить.
FroL
reclosedev
Если уже почти все написали и устраивает, то и ладно.
ну как сказать написал - я просто тестирую сам механизм, а чего то конкретного еще нет, поэтому и ищу варианты.
На счет tableWidget - данные то я загрузил, а вот как с ними работать - т.е. реализация сохранения изменений и удаления строки - так что не факт что с моим механизмом мне будет легко.
reclosedev
Или Model-View использовать: унаследоваться от QAbstractTableModel, и для модели для чтения, 5 методов переопределить.
Кстати мне это предлагали сделать :)
а можно поподробнее на счет унаследования от QAbstractTableModel. Я так понимаю мне надо наследоваться от этого класса, переопределить определенные методы и у меня будет своя модель? Я правильно понял?
reclosedev
FroL
Я так понимаю мне надо наследоваться от этого класса, переопределить определенные методы и у меня будет своя модель? Я правильно понял?
Да. Там по ссылке полный обзор Model-View.

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

Но с драйвером было бы проще.

FroL
Но я не могу собрать этот драйвер QPSQL под МСВС
Так собираете? Что конкретно не получается, или другие причины?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB