Уведомления

Jabber-конференция сообщества: pythonua@conference.jabber.ru

#1 Дек. 6, 2016 20:11:27

Oleg_p
Зарегистрирован: 2014-10-15
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Смена подключения qsqlite

(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()

Офлайн

#2 Дек. 8, 2016 14:01:20

vic57
Зарегистрирован: 2015-07-07
Сообщения: 348
Репутация: +  53  -
Профиль   Отправить e-mail  

Смена подключения qsqlite

есть хороший пример с исходниками

Отредактировано vic57 (Дек. 8, 2016 14:01:33)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version