Форум сайта python.su
(Win7, python 2.7, PyQt 4)
Всем привет!
Прошу вашей помощи по мере возможности.
Пытаюсь написать простенькое приложение для обзора создаваемых sqlite (пока) с дальнейшей компиляцией в .exe
Пока что есть окошко с таблицами и их содержимым но возникли проблемы с закрытием текущего подключения базы и подключением к другой базе
Не могу понять как это можно реализовать.
Заранее спасибо за любую помощь!
Что получилось на сейчас :
# -*- coding: utf-8 -*- from __future__ import unicode_literals import sys from PyQt4 import QtSql, QtCore, QtGui filename = 'H:\\test\\test_db' filename_2 = 'H:\\test\\test_db_2' # filename = 'memory' class ViewBase(QtGui.QDialog): def __init__(self, parent=None): super(ViewBase, self).__init__(parent) self.current_table_name = 'outcomes' # указываем исходную табл базы (временно) self.listLabel = QtGui.QLabel(' Список таблиц') self.listWidget = QtGui.QListWidget() self.listLabel.setBuddy(self.listWidget) vBox_1 = QtGui.QVBoxLayout() vBox_1.addWidget(self.listLabel) vBox_1.addWidget(self.listWidget) self.tableLabel = QtGui.QLabel() self.sqlTable_model = QtSql.QSqlTableModel(self) self.tableView = QtGui.QTableView() self.tableLabel.setBuddy(self.tableView) self.tableView.setModel(self.sqlTable_model) vBox_2 = QtGui.QVBoxLayout() vBox_2.addWidget(self.tableLabel) vBox_2.addWidget(self.tableView) hBox = QtGui.QHBoxLayout() hBox.addLayout(vBox_1) hBox.addLayout(vBox_2) self.setLayout(hBox) self.populateList() self.populateTables() self.setWindowTitle('база данных обзор') self.resize(440, 250) self.listWidget.itemClicked.connect(self.listItemChanged) def listItemChanged(self, item): self.current_table_name = item.text() self.populateTables() def populateList(self): self.listWidget.clear() self.listWidget.setSortingEnabled(True) query = QtSql.QSqlQuery() query.exec_('SELECT * FROM sqlite_master') while query.next(): if query.value(0).toString() == 'table': self.listWidget.addItem(query.value(1).toString()) def populateTables(self): self.sqlTable_model.clear() self.sqlTable_model.setTable(self.current_table_name) self.sqlTable_model.select() self.sqlTable_model.setEditStrategy(QtSql.QSqlTableModel.OnFieldChange) self.tableLabel.setText('Таблица: "<font color=red><b> %s </b></colors>" ' % self.current_table_name) def main(): app = QtGui.QApplication(sys.argv) database = QtSql.QSqlDatabase.addDatabase('QSQLITE') database.setDatabaseName(filename) if not database.open(): QtGui.QMessageBox.warning(None, "Asset Manager", QtCore.QString("Database Error: %1") .arg(database.lastError().text())) sys.exit(1) query = QtSql.QSqlQuery() query.exec_('pragma table_info(outcomes)') # query.exec_('SELECT * FROM outcomes') print(query.lastError().text()) # while query.next(): # if query.value(0).toString() == 'table': # print query.value(1).toString() # print('%s : %s') %(query.value(0).toString(), query.value(1).toString()) # print query.value(2).toString() applicat = ViewBase() applicat.show() return app.exec_() main()
Офлайн
есть хороший пример с исходниками
Отредактировано vic57 (Дек. 8, 2016 14:01:33)
Офлайн