Я создаю базу данных, затем закрываю и окончательно удаляю ее с помощью os.remove, но если я пытаюсь создать ту же базу данных с той же строкой, а затем вставляю новую таблицу, компилятор говорит, что я не может работать в закрытая база данных . Если я добавлю db.open (), компилятор скажет, что не имеет открытого атрибута .
Я попытался добавить ту же строку подключения в другое определение, но я все еще не могу работать с «закрытой» базой данных, когда очевидно, что я удалил ее, а затем создал новую базу данных. Я тоже использую pyqt5, поэтому я написал "QMainWindow"
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
from PyQt5 import uic
import sqlite3
import os
db = sqlite3.connect("prueba.db")
puntero = db.cursor()
#ayuda a este pobre noob que no sabe sqlite3 ni como funciona los argumentos dentro de un def()de python
class Ventana(QMainWindow):
def __init__(self):
QMainWindow.__init__(self)
uic.loadUi("base.ui",self)
self.btn_Tabla.clicked.connect(self.createTabla)
self.btn_Insertar.clicked.connect(self.createDatos)
self.btn_Borrar.clicked.connect(self.deleteBase)
self.btn_Crear.clicked.connect(self.createBase)
def createBase(self):
db = sqlite3.connect("prueba.db")
puntero = db.cursor()
self.txt_Base.setText("database created")
def createDatos(self):
x=1
def createTabla(self):
puntero.execute('''
CREATE TABLE Usuarios(id INTEGER PRIMARY KEY, Nombre TEXT,
Telefono TEXT, Correo TEXT unique, Contraseña TEXT)
''')
db.commit()
self.txt_Base.setText("tables inserted")
def deleteBase(self):
db.close()
os.remove("prueba.db")
self.txt_Base.setText("deleted database")
app = QApplication(sys.argv)
_ventana = Ventana()
_ventana.show()
app.exec_()