Как решить проблему "QSqlQuery::exec: database not open"?

У меня этот файл исполняет роль создания базы данных, раньше он работал исправно.

import sys, os
from PyQt5.QtSql import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *


def createDB():
   path = os.getcwd()
   db = QSqlDatabase.addDatabase('QSQLITE')
   db.setDatabaseName(os.path.join(path, r"db/", 'Андрій.db'))
   query = QSqlQuery()
   query.exec_("create table sportsmen(items, firstname varchar(20), lastname varchar(20))")
   query.exec_("insert into sportsmen values('', '', '')")
   return True
   if not db.open():
      msg = QMessageBox()
      msg.setIcon(QMessageBox.Critical)
      msg.setText("Error in Database Creation")
      retval = msg.exec_()
      return False

   
if __name__ == '__main__':
   app = QApplication(sys.argv)
   createDB()

Ответы (1 шт):

Автор решения: S. Nick

Попробуйте так:

import sys, os
from PyQt5.QtSql import *
from PyQt5.Qt import *


def createDB():
    path = os.getcwd()
    db = QSqlDatabase.addDatabase('QSQLITE')
    
    path = os.path.join(path, r"data/", 'q1364188.db')
    db.setDatabaseName(path)       

    # try to open the database
    if not db.open():
        msg = QMessageBox()
        msg.setIcon(QMessageBox.Critical)
        msg.setText("Error in Database Creation")
        retval = msg.exec_()
        return False
   
    query = QSqlQuery()
    query.exec_("""create table sportsmen(
        items, firstname varchar(20), lastname varchar(20))""")
       
    query.exec_("insert into sportsmen values('1', '2', '3')")
   
    return True

   
if __name__ == '__main__':
    app = QApplication(sys.argv)
    createDB()

введите сюда описание изображения

→ Ссылка