Найти - Пользователи
Полная версия: Данные в Grid
Начало » GUI » Данные в Grid
1 2 3 4 5
proDiva
balu
Я имею в виду наполнение виджета данными из СУБД. Если результат выборки миллион записей - ты их каждый раз все в грид пихаешь или таки по частям.
У меня вся база около 6 тысяч записей, о миллионах речь не идет. Поэтому все сразу кидаю в таблицу. Кроме этого есть фильтры, т.е. все записи будут в таблице, если выбирут все.
balu
proDiva
У меня вся база около 6 тысяч записей ….. Поэтому все сразу кидаю в таблицу
У тебя будет прога тормозить каждый раз, когда ты будешь перечитывать записи. И еще, умные люди сразу делают с “запасом прочности”. Потому что сегодня у тебя 6 тыс. записей, а завтра 20 т., послезавтра еще больше. И еще, надо ли пользователю видеть все 6т записей? Вот посмотри, http://b-al-u.livejournal.com/5145.html в результате запроса около 30 т. записей, таблица начинает подтормаживать при загрузке после 10 т. Раньше я для таких целей писал кеш, теперь с питошей все намного проще. Прога грузит последовательно по 150 записей. Заодно у меня самое сложное - написать SQL-запрос. Дальше все генерируется автоматически - запросы на модификацию, диалоги на сортировку, поиск, модификацию (включая master-detail связи). Очень рекомендую такое сделать.
proDiva
balu
Вот посмотри, http://b-al-u.livejournal.com/5145.html в результате запроса около 30 т. записей, таблица начинает подтормаживать при загрузке после 10 т.
И что мне с этим делать? я там увидела только картинку.
pythonwin
balu
от посмотри, http://b-al-u.livejournal.com/5145.html в результате запроса около 30 т. записей
а что это за прога - для чего?
balu
pythonwin
а что это за прога - для чего?
Морды для работы с базами данных. Всякие там склады, бухгалтерии и подобная чушь. Ну и администрирование до кучи.
balu
proDiva
И что мне с этим делать? я там увидела только картинку.
пример организации ДБГрида. Какраз видна реализация того, о чем я писал выше.
proDiva
balu
пример организации ДБГрида. Какраз видна реализация того, о чем я писал выше.
Вот если бы я увидела его код, тогда бы я применила его на своем деле;) а от того что я увидела его вид, мне легче не стало……. я не знаю, как его реализовать))
Еще проблема - как достать выбранную запись для редактирования? Щас сижу ищу примеры. Если сможете облегчить мне жизнь готовым примером, буду благодарна))
balu
proDiva
Вот если бы я увидела его код, тогда бы я применила его на своем деле;) а от того что я увидела его вид, мне легче не стало……. я не знаю, как его реализовать))
Ccылку, как сделать то, что показано на рисунке я приводил. Ваши проблемы у меня давно решены. Но код я открою не раньше, чем ч-з пол-года. Но с проблемой постараюсь помочь завтра.
proDiva
balu
Ваши проблемы у меня давно решены. Но код я открою не раньше, чем ч-з пол-года. Но с проблемой постараюсь помочь завтра.
Нет слов, одни эмоции ))))))
balu
Итак. Судя по вашему посту
proDiva
Еще проблема - как достать выбранную запись для редактирования? Щас сижу ищу примеры.
У вас результате запроса данные пихаются прямо в нужный вам виджет и вы нигде данные, возвращаемые cursor.fetchXXX больше не храните. Я бы сделал так:
1) Создал бы класс, (DBQuery) который реагирует на ваши запросы и все с ними связанное (читай python DB API, есть мой перевод на этом сайте), которое в вашем решении вы сочтете нужным применить. Этот класс возвращает результирующий набор в виде
2) Создаете класс (DBGRID), основанный на вашем виджете, например, таблица. В самом классе DBGRID создаете экземпляр DBQuery и данные, возвращаемые DBQuery (не забывайте, что это ) пихайте в промежуточный список и в таблицу построчно. Тоесть строка 0-(record0), строка 1-(record1) и т.д. Теперь, при обращении к конкретной записи вы всегда сможете достучаться по индексу (номеру конкретной строки) из таблицы в сохраненном вами ромежуточный списке. Промежуточный список полезен вам будет и при операциях модификации когда вы оставляете нетронутым список из DBQuery. Можно, конечно менять и его, но мне этот вариант почему-то не понравился, не помню уже.
3) Если вы все-таки послушаетесь меня и сделаете загрузку данных в таблицу по частям то вам надо будет отслеживать перемещения текущей позиции курсора таблицы. Так вот, если курсор приближается к концу таблицы на n записей вы просто вызываете метод Next, как показано в примере по ссылке.

Ну вот так, в первом приближении, процесс описал. Надеюсь суть уловили. Само-собой вам придется обвешать ваши DBQuery и DBGRID своими методами, которые вы сочтете нужным придумать.
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