Как решить проблему "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()
