Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 16, 2012 16:00:57

FroL
От:
Зарегистрирован: 2011-06-21
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

Здравствуйте. Мне необходимо сделать графический интерфейс для работы с БД Postgres 8.4. Выбрал механизм PyQt4+psycopg2.
Встал вопрос как загрузить данные в виджет и в какой. Если с виждетом все понятно - QTableWidget, то вот как загружать данные в него дело сложное.
Во -первых: если загружать сразу все данные через цикл (а данных будет много), то приложение будет тормозить;
Во-вторых: если загружать данные частично, то надо разработать механизм отслеживания прокрутки колесика мышки, загрузки и выгрузки данных.
Подскажите в правильном ли я направлении думаю?



Офлайн

#2 Авг. 16, 2012 16:44:57

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Офлайн

#3 Авг. 17, 2012 08:26:54

FroL
От:
Зарегистрирован: 2011-06-21
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

Спасибо за ответ, но через модель QSqlDatabase я не могу подключиться, из-за отсутствия драйвера QPSQL. Поэтому реализую подключение к БД через psytcopg2.
Поэтому ваши ссылки мне не подходят.



Отредактировано FroL (Авг. 17, 2012 10:16:33)

Офлайн

#4 Авг. 17, 2012 10:25:31

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

FroL
но через модель QSqlDatabase я не могу подключиться, из-за отсутствия драйвера QPSQL
Для Win в PyQt и в PySide они есть по умолчанию.
Для Ubuntu
sudo apt-get install libqt4-sql-psql
Для других возможно вручную компилировать нужно, в гугле должно быть на эту тему что-то.

Можно это и не использовать, конечно, но велосипедов много написать придется (про QTableWidget правда сразу забудьте, только Model-View если данных много).

Офлайн

#5 Авг. 17, 2012 10:51:05

FroL
От:
Зарегистрирован: 2011-06-21
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

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



Отредактировано FroL (Авг. 17, 2012 10:52:17)

Офлайн

#6 Авг. 17, 2012 11:14:44

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

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

Офлайн

#7 Авг. 17, 2012 11:51:04

FroL
От:
Зарегистрирован: 2011-06-21
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

reclosedev
Если не смотреть на то, что не используются возможности Qt по работе с БД, то например, для вставки данных в QTableWidget нужны QTableWidgetItem'ы - а это оверхед на создание лишних объектов.
Я согласен что не используются возможность Qt для работы с БД.
Но я не могу собрать этот драйвер QPSQL под МСВС. Поэтому ищу обходные пути.



Офлайн

#8 Авг. 17, 2012 12:11:16

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

FroL
МСВС
Мобильная система Вооружённых Сил? Ого

FroL
Поэтому ищу обходные пути.
Если уже почти все написали и устраивает, то и ладно. А так, можно было бы например свой драйвер написать, обертку над psycopg2 (не уверен, что это просто). Или Model-View использовать: унаследоваться от QAbstractTableModel, и для модели для чтения, 5 методов переопределить.

Офлайн

#9 Авг. 17, 2012 14:08:09

FroL
От:
Зарегистрирован: 2011-06-21
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

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



Офлайн

#10 Авг. 17, 2012 16:16:33

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

PyQt4 + psycopg2

FroL
Я так понимаю мне надо наследоваться от этого класса, переопределить определенные методы и у меня будет своя модель? Я правильно понял?
Да. Там по ссылке полный обзор Model-View.

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

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

FroL
Но я не могу собрать этот драйвер QPSQL под МСВС
Так собираете? Что конкретно не получается, или другие причины?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version