#!/usr/bin/env python
 
import sys
 
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtSql import *
 
# --------------------------------------------------------------------------
 
class DatabaseInfo (object) :
   def __init__ (self) :
       self.item_list = [ ]
 
class TableInfo (object) :
   def __init__ (self) :
       self.item_name = ""
       self.item_list = [ ]
 
class ColumnInfo (object) :
   def __init__ (self) :
       self.item_name = ""
 
# --------------------------------------------------------------------------
 
class DbView (QWidget):
 
   def __init__ (self, parent = None) :
       super (DbView, self).__init__ (parent)
 
       layout = QVBoxLayout ()
       self.setLayout (layout)
 
       table = QTableView ()
       layout.addWidget (table)
 
       db = QSqlDatabase.addDatabase ("QSQLITE")
       # db.setDatabaseName (":memory:")
       db.setDatabaseName ("test.sqlite")
       db.open ()
 
       query = db.exec_ ("CREATE TABLE IF NOT EXISTS colors (name TEXT, red INTEGER, green INTEGER, blue INTEGER)")
 
       db.exec_ ("INSERT INTO colors (name, red, green, blue) VALUES (\"blue\", 0, 0, 255)")
 
       insert = QSqlQuery (db)
       insert.prepare ("INSERT INTO colors (name, red, green, blue) VALUES (:name, :red, :green, :blue)")
       insert.bindValue (":name", "green")
       insert.bindValue (":red", QVariant (0))
       insert.bindValue (":green", QVariant (255))
       insert.bindValue (":blue", QVariant (0))
       insert.exec_ ()
 
       model = QSqlTableModel (self, db)
       model.setTable ("colors")
       model.select ()
 
       table.setModel (model)
 
       database_info = DatabaseInfo ()
       database_info.item_name = db.databaseName()
       database_info.item_expand = True
 
       table_list = db.tables()
       for table_name in table_list :
           query = db.exec_ ("SELECT * FROM " + table_name)
 
           table_info = TableInfo ()
           table_info.item_name = table_name
           table_info.item_expand = True
           database_info.item_list.append (table_info)
 
           rec = query.record ()
           for k in range (rec.count ()) :
              txt = rec.fieldName (k)
              column_info = ColumnInfo ()
              column_info.item_name = txt;
              table_info.item_list.append (column_info)
 
 
if __name__ == "__main__" :
   app = QApplication (sys.argv)
   win = DbView ()
   win.show ()
   app.exec_ ()
 
pokus_dbs.txt · Last modified: 2021/12/09 18:48 by 147.32.8.115
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki