Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 1, 2016 18:39:27

MaratD
Зарегистрирован: 2016-01-25
Сообщения: 138
Репутация: +  0  -
Профиль   Отправить e-mail  

Технология работы с базой данных

Здравствуйте уважаемые разработчики. Нигде не могу найти объяснения. Работаю с dbf файлом библиотекой dbf 0.96. Научился читать данные с него, искать нужные записи. Создавать новый dbf файл и записывать в него нужные данные. Теперь мне нужно отобразить данные dbf файла в виде таблицы. И из этой таблицы выбирать данные и записывать в новый файл. Вопрос такой. Как правильно организовать эту работу? Открыть dbf файл и из него выбирать нужные записи? Если так, то записей в файле порядка 25000. Работать с файлом будут несколько часов. И все это время файл будет открыт? Или используется другая (правильная) технология? Спасибо.

Офлайн

#2 Фев. 1, 2016 20:46:50

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Технология работы с базой данных

MaratD
Или используется другая (правильная) технология?
Обычные Файлы могут быть открыты для чтения, для записи в для записи в эксклюзивном режиме (когда другим не дают доступа на чтение) и т.п.

Нормальные субд сами обеспечивают коллективный доступ к данным. Обычно файлы держит открытым одно приложение - сервер СУБД. Он и раздает данные и меняет их по запросам от приложений. (Похоже это не ваш случай, закрывайте файл самостоятельно).



Офлайн

#3 Фев. 2, 2016 06:00:51

MaratD
Зарегистрирован: 2016-01-25
Сообщения: 138
Репутация: +  0  -
Профиль   Отправить e-mail  

Технология работы с базой данных

doza_and
(Похоже это не ваш случай, закрывайте файл самостоятельно).
А когда его закрывать? Когда закончат работать, т. е. держать его открытым несколько часов? Или открывать по новому запросу и закрывать после прочтения данных? С файлом будет работать один человек.


Офлайн

#4 Фев. 2, 2016 06:07:16

MaratD
Зарегистрирован: 2016-01-25
Сообщения: 138
Репутация: +  0  -
Профиль   Отправить e-mail  

Технология работы с базой данных

Или правильнее будет перенести все данные dbf файла в QTable и работать с ней, а файл закрыть?

Офлайн

#5 Фев. 2, 2016 08:09:23

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Технология работы с базой данных

MaratD
правильнее
Если работает один человек то это не очень принципиально. Для небольшого объема данных я бы считал все и закрыл файл, потому что программа будет проще если не заниматься постоянным чтением и записью. Если оставите файл открытым (например как делает MS Office), то не забудьте залочить его чтобы случайно не изменить другими средствами. Но если в действе должны принимать участие несколько человек то возникает вопрос должны изменения одних сказываться на состоянии GUI у других? Если да, то насколько детально? Обновляться по окончании работы, обновляться по требованию пользователя, при каждой прокрутке таблицы, при каждом нажатии клавиши на клавиатуре у любого из пользователей? Если по требованию, то наверное можно файл открывать и закрывать, для более частых транзакций надо перегнать данные в нормальную СУБД (лучше вообще отказаться от палеонтологического dbf оставив при необходимости экспорт). Еще более частые транзакции делают обычно не средствами СУБД.



Отредактировано doza_and (Фев. 2, 2016 08:14:55)

Офлайн

#6 Фев. 2, 2016 09:22:32

MaratD
Зарегистрирован: 2016-01-25
Сообщения: 138
Репутация: +  0  -
Профиль   Отправить e-mail  

Технология работы с базой данных

doza_and
Для небольшого объема данных я бы считал все и закрыл файл, потому что программа будет проще если не заниматься постоянным чтением и записью.

Спасибо. Количество записей около 25000. Ну пусть 30000 максимум. Меняется периодически.
Это считается небольшой объем или нет?
И еще вопрос. QTable позволяет сортировать и осуществлять поиск записей?

Офлайн

#7 Фев. 2, 2016 20:17:58

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Технология работы с базой данных

MaratD
Это считается небольшой объем или нет?
Откуда мне знать, может у вас записи по гигабайту каждая. А может вы это на контроллере с 10К памяти будете запускать.
Скорее всего это мизерный объем. Если dbf файл меньше 100 мегабайт то маленький.
MaratD
QTable позволяет сортировать и осуществлять поиск записей?
Не знаю, никогда Qt не пользовался, не возникало необходимости. Тут есть умельцы, ответят как подтянутся.



Офлайн

#8 Фев. 3, 2016 15:10:22

MaratD
Зарегистрирован: 2016-01-25
Сообщения: 138
Репутация: +  0  -
Профиль   Отправить e-mail  

Технология работы с базой данных

doza_and спасибо большое!
Сильно помог.
А куда еще можно считать dbf если не в QTable, чтобы нормально отобразить таблицу?

Офлайн

#9 Фев. 3, 2016 20:34:47

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Технология работы с базой данных

> QTable позволяет сортировать и осуществлять поиск записей?

Что такое QTable? QTableView или QTableWidget?



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#10 Фев. 4, 2016 18:39:42

MaratD
Зарегистрирован: 2016-01-25
Сообщения: 138
Репутация: +  0  -
Профиль   Отправить e-mail  

Технология работы с базой данных

Я пока не определился QTableView или QTableWidget. Если есть опыт работы с чем-нибудь из этого поделитесь пожалуйста. С чем проще и где можно искать, сортировать считанные данные. Спасибо.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version