QSqlDatabase.tables() return empty list
-
I create 2 tables with QSqlDatabase.query.exec.
The Table exist but QSqlDatabase.tables() return an empty list. why ?from PySide6.QtSql import QSqlDatabase, QSqlQuery, QSql class MyDb(QSqlDatabase): def __init__(self, db_type): super().__init__(db_type) self.mydb = QSqlDatabase.addDatabase(db_type) self.query = QSqlQuery() def connectDataBase(self, name): self.mydb.setDatabaseName(name) if not self.mydb.open(): print("QTableView Example - Error!") print("Database Error: {}".format(self.mydb.lastError().databaseText())) else: print("connexion OK") def createTableConnexions(self): if not self.query.exec( """ CREATE TABLE connexions ( id INTEGER PRIMARY KEY UNIQUE NOT NULL, start_time CARACTERE(20) NOT NULL, end_time CARACTERE(20) ) """ ): print("query.exec() - Error!") print("Database Error: {}".format(self.query.lastError().databaseText())) else: print("Table Connexions créée ") def createTableEvenements(self): if not self.query.exec( """ CREATE TABLE evenements ( id INTEGER PRIMARY KEY UNIQUE NOT NULL, datetime CARACTERE(20) NOT NULL, event CARACTERE(60) ) """ ): print("query.exec() - Error!") print("Database Error: {}".format(self.query.lastError().databaseText())) else: print("Table Evenements créée ") if __name__ == '__main__': mydb = MyDb("QSQLITE") mydb.connectDataBase("sandBox.sqlite") mydb.createTableConnexions() mydb.createTableEvenements() print(mydb.tables())When I execute the code the fist time :
connexion OK Table Connexions créée Table Evenements créée [] Process finished with exit code 0I execute the code after
connexion OK query.exec() - Error! Database Error: table connexions already exists query.exec() - Error! Database Error: table evenements already exists [] Process finished with exit code 0 -
@JM-baubet Why do you subclass QSqlDatabase?! It makes no sense.
You're anyway using self.mydb = QSqlDatabase.addDatabase(db_type), so you need to call tables() on self.mydb. -
I create 2 tables with QSqlDatabase.query.exec.
The Table exist but QSqlDatabase.tables() return an empty list. why ?from PySide6.QtSql import QSqlDatabase, QSqlQuery, QSql class MyDb(QSqlDatabase): def __init__(self, db_type): super().__init__(db_type) self.mydb = QSqlDatabase.addDatabase(db_type) self.query = QSqlQuery() def connectDataBase(self, name): self.mydb.setDatabaseName(name) if not self.mydb.open(): print("QTableView Example - Error!") print("Database Error: {}".format(self.mydb.lastError().databaseText())) else: print("connexion OK") def createTableConnexions(self): if not self.query.exec( """ CREATE TABLE connexions ( id INTEGER PRIMARY KEY UNIQUE NOT NULL, start_time CARACTERE(20) NOT NULL, end_time CARACTERE(20) ) """ ): print("query.exec() - Error!") print("Database Error: {}".format(self.query.lastError().databaseText())) else: print("Table Connexions créée ") def createTableEvenements(self): if not self.query.exec( """ CREATE TABLE evenements ( id INTEGER PRIMARY KEY UNIQUE NOT NULL, datetime CARACTERE(20) NOT NULL, event CARACTERE(60) ) """ ): print("query.exec() - Error!") print("Database Error: {}".format(self.query.lastError().databaseText())) else: print("Table Evenements créée ") if __name__ == '__main__': mydb = MyDb("QSQLITE") mydb.connectDataBase("sandBox.sqlite") mydb.createTableConnexions() mydb.createTableEvenements() print(mydb.tables())When I execute the code the fist time :
connexion OK Table Connexions créée Table Evenements créée [] Process finished with exit code 0I execute the code after
connexion OK query.exec() - Error! Database Error: table connexions already exists query.exec() - Error! Database Error: table evenements already exists [] Process finished with exit code 0@JM-baubet Why do you subclass QSqlDatabase?! It makes no sense.
You're anyway using self.mydb = QSqlDatabase.addDatabase(db_type), so you need to call tables() on self.mydb. -
@JM-baubet Why do you subclass QSqlDatabase?! It makes no sense.
You're anyway using self.mydb = QSqlDatabase.addDatabase(db_type), so you need to call tables() on self.mydb. -
J JM baubet has marked this topic as solved on