Форум сайта python.su
Здравствуйте. Мне необходимо сделать графический интерфейс для работы с БД Postgres 8.4. Выбрал механизм PyQt4+psycopg2.
Встал вопрос как загрузить данные в виджет и в какой. Если с виждетом все понятно - QTableWidget, то вот как загружать данные в него дело сложное.
Во -первых: если загружать сразу все данные через цикл (а данных будет много), то приложение будет тормозить;
Во-вторых: если загружать данные частично, то надо разработать механизм отслеживания прокрутки колесика мышки, загрузки и выгрузки данных.
Подскажите в правильном ли я направлении думаю?
Офлайн
Модель:
http://qt-project.org/doc/qt-4.8/qsqldatabase.html
http://qt-project.org/doc/qt-4.8/qsqlrelationaltablemodel.html
Вид:
http://qt-project.org/doc/qt-4.8/qtableview.html
Обзор
http://qt-project.org/doc/qt-4.8/sql-programming.html
или для PyQt
http://www.riverbankcomputing.co.uk/static/Docs/PyQt4/html/qtsql.html
Отредактировано reclosedev (Авг. 16, 2012 16:45:39)
Офлайн
Спасибо за ответ, но через модель QSqlDatabase я не могу подключиться, из-за отсутствия драйвера QPSQL. Поэтому реализую подключение к БД через psytcopg2.
Поэтому ваши ссылки мне не подходят.
Отредактировано FroL (Авг. 17, 2012 10:16:33)
Офлайн
FroLДля Win в PyQt и в PySide они есть по умолчанию.
но через модель QSqlDatabase я не могу подключиться, из-за отсутствия драйвера QPSQL
sudo apt-get install libqt4-sql-psqlДля других возможно вручную компилировать нужно, в гугле должно быть на эту тему что-то.
Офлайн
reclosedevА почему забыть? Я загружаю 15000 строк по 10 столбцов в tableWidget и это у меня занимает 1,5 - 2 секунды. Так чем же плох TableWidget?
про QTableWidget правда сразу забудьте, только Model-View если данных много
Отредактировано FroL (Авг. 17, 2012 10:52:17)
Офлайн
FroLСомневаюсь, что пользователь хотел бы ждать 1.5 секунды, а потом листать 15 тыс. строк.
Я загружаю 15000 строк по 10 столбцов в tableWidget и это у меня занимает 1,5 - 2 секунды.
FroLЕсли не смотреть на то, что не используются возможности Qt по работе с БД, то например, для вставки данных в QTableWidget нужны QTableWidgetItem'ы - а это оверхед на создание лишних объектов.
Так чем же плох TableWidget?
Офлайн
reclosedevЯ согласен что не используются возможность Qt для работы с БД.
Если не смотреть на то, что не используются возможности Qt по работе с БД, то например, для вставки данных в QTableWidget нужны QTableWidgetItem'ы - а это оверхед на создание лишних объектов.
Офлайн
FroLМобильная система Вооружённых Сил? Ого
МСВС
FroLЕсли уже почти все написали и устраивает, то и ладно. А так, можно было бы например свой драйвер написать, обертку над psycopg2 (не уверен, что это просто). Или Model-View использовать: унаследоваться от QAbstractTableModel, и для модели для чтения, 5 методов переопределить.
Поэтому ищу обходные пути.
Офлайн
reclosedevну как сказать написал - я просто тестирую сам механизм, а чего то конкретного еще нет, поэтому и ищу варианты.
Если уже почти все написали и устраивает, то и ладно.
reclosedevКстати мне это предлагали сделать :)
Или Model-View использовать: унаследоваться от QAbstractTableModel, и для модели для чтения, 5 методов переопределить.
Офлайн
FroLДа. Там по ссылке полный обзор Model-View.
Я так понимаю мне надо наследоваться от этого класса, переопределить определенные методы и у меня будет своя модель? Я правильно понял?
FroLТем более. Переопределить еще 3 метода, плюс может написать несколько своих делегатов для редактирования особых данных.
т.е. реализация сохранения изменений и удаления строки - так что не факт что с моим механизмом мне будет легко.
FroLТак собираете? Что конкретно не получается, или другие причины?
Но я не могу собрать этот драйвер QPSQL под МСВС
Офлайн