Уведомления

Группа в Telegram: @pythonsu

#1 Май 20, 2010 20:01:16

ussr-->
От:
Зарегистрирован: 2010-05-20
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt и sqlite

Здарвствуйте!

Недавно начал учить питон. Хотел бы узнать какие виджеты в PyQt лучше использовать для отображения базы данных (sqlite). Вроде нашел QTableView, но как связать с базой толком не разобрался. Понял что у Qt есть свои стандартные спобоы раоты с базой, но мне хотелось бы что б видежты PyQt только отображали, а работа с базой осуществлялось через модуль sqlite. И все изменения автоматически отображались на виджетах. Такое возможно сделать?

PS Не судите сильно, если вопрос легкий. Просто я 2й день мучаюсь и найти ни чего подходящего не мог. Заранее всем спасибо за помощь



Офлайн

#2 Май 20, 2010 21:23:34

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt и sqlite

QTableWidget попроще будет или QListWidget, что тебе логически больше подходит. Соединить просто - берешь данные и вставляешь в ячейки :)



Офлайн

#3 Май 21, 2010 02:05:07

ussr-->
От:
Зарегистрирован: 2010-05-20
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt и sqlite

U

pasaranax
QTableWidget попроще будет или QListWidget, что тебе логически больше подходит. Соединить просто - берешь данные и вставляешь в ячейки :)
Спасибо что отозвались.

Ну в ручную это понятно что можно. Я просто хотел что б была какая нибудь связь, которая в случае изменений в базе, автоматически эти изменения отображало на виджите. Или если не пользоваться средствами pyqt для работы с базой, то нужно будет в ручную за этими изменениями следить?



Офлайн

#4 Май 21, 2010 06:27:35

dartNNN
От:
Зарегистрирован: 2009-12-08
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt и sqlite

А зачем QTableWidget, если он оставлен только ради совместимости, а работать надо с QTableView. Там все просто: есть еще QSqlTableModel, вот в нем задаются некоторые параметры, а потом он подключается к QTableView через QTableView.setModel(self ,model).
По-моему очень просто все и работать будет так как и хочет TC



Офлайн

#5 Май 21, 2010 06:30:07

ussr-->
От:
Зарегистрирован: 2010-05-20
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt и sqlite

ussr-->
U
pasaranax
QTableWidget попроще будет или QListWidget, что тебе логически больше подходит. Соединить просто - берешь данные и вставляешь в ячейки :)
Спасибо что отозвались.

Ну в ручную это понятно что можно. Я просто хотел что б была какая нибудь связь, которая в случае изменений в базе, автоматически эти изменения отображало на виджите. Или если не пользоваться средствами pyqt для работы с базой, то нужно будет в ручную за этими изменениями следить?
Сейчас попробовал QTableWidget. Удобная вещь. Спасибо за совет! Только вот вопрос такой. А нет ли какого нибудь ограничения для них? Ну QTableWidget может на пример,нормально работать с не более 1000 записей в базе а дальше либо теряет эффективность, либо вообще не работает.

И все же хотелось узнать. Если ли способ эффективней чем обновление путем удаление всех записей и нового их добавления?



Офлайн

#6 Май 21, 2010 07:24:59

ussr-->
От:
Зарегистрирован: 2010-05-20
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt и sqlite

dartNNN
А зачем QTableWidget, если он оставлен только ради совместимости, а работать надо с QTableView. Там все просто: есть еще QSqlTableModel, вот в нем задаются некоторые параметры, а потом он подключается к QTableView через QTableView.setModel(self ,model).
По-моему очень просто все и работать будет так как и хочет TC
Да. Это то что нужно! Спасибо вам большое!

Только вот один вопрос. Если не тяжело, то ответь пожалуйста. В инете натыкался на довольно частый случий, когда создавали свою модель, путем наследования от QSqlTableModel. В каких случаях это вообще необходимо и что это дает? Буду признателен если просвятите:)



Офлайн

#7 Май 22, 2010 11:38:44

dartNNN
От:
Зарегистрирован: 2009-12-08
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt и sqlite

Ну сам я такое не делал, обходился стандартом. Но в общем случае это нужно, когда стандартного функционала не хватает. В примерах PyQt, например, переопределяется QSqlQueryModel, чтобы сделать только 1 и 2 столбцы редактируемыми, также там обрабатываются данные из базы, прежде чем передать их в QTableView. Т.к. QSqlTableModel лежит между базой и QTableView, то это самое то место для обработки данных перед выводом в QTableView



Офлайн

#8 Май 23, 2010 15:07:29

ussr-->
От:
Зарегистрирован: 2010-05-20
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQt и sqlite

dartNNN
Ну сам я такое не делал, обходился стандартом. Но в общем случае это нужно, когда стандартного функционала не хватает. В примерах PyQt, например, переопределяется QSqlQueryModel, чтобы сделать только 1 и 2 столбцы редактируемыми, также там обрабатываются данные из базы, прежде чем передать их в QTableView. Т.к. QSqlTableModel лежит между базой и QTableView, то это самое то место для обработки данных перед выводом в QTableView
Спасибо большое за разъяснение! Мне просто нужно было отображать не одну таблицу (как в QSqlTableModel предлагают), а объединение. Вот уже и начал думать, что для этого придется писать свою модель. Но потом нашел QSqlQueryModel и понял, что можно обойтись. Но тогда стало интересно… Для чего вообще нужна своя модель:)
В общем… Еще раз спасибо за то что отозвались и объяснили!)



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version