DRIVER NOT LOADED DRIVER NOT LOADED
Publicado por Roberto Matarrita (106 intervenciones) el 24/07/2017 07:21:32
Ya habia publicado este error. Pero ahora les pongo el código que utilizo para ver si me pueden ayudar. Utilizo Python 3.5, con PYQT5.
Como observan hay dos inserciones a la base de datos. La primera con esa cadena de conexión, me funciona correctamente. Pero cuando trato de hacer el proceso segundo utilizando el siguiente código no puedo abrir la base de datos. Instale este proceso import psycopg2, pero aún asi no entiendo el porque no puedo abrir la base de datos. Desconozco si será la versión de python que utilizo y no entiendo porque en un lado si lo hace y en otro no.
Mucho agradeceria me ayudaran.
Roberto
Costa Rica.
Aquí comienza todo el código, incluso lo pueden correr, la tabla es id number, nombre varchar(50), edad number(2)
Como observan hay dos inserciones a la base de datos. La primera con esa cadena de conexión, me funciona correctamente. Pero cuando trato de hacer el proceso segundo utilizando el siguiente código no puedo abrir la base de datos. Instale este proceso import psycopg2, pero aún asi no entiendo el porque no puedo abrir la base de datos. Desconozco si será la versión de python que utilizo y no entiendo porque en un lado si lo hace y en otro no.
Mucho agradeceria me ayudaran.
Roberto
Costa Rica.
1
2
3
4
5
6
7
#Establecer conexión a la base de datos Postgresql
self.db = QSqlDatabase.addDatabase('postgres')
self.db.setHostName('localhost')
self.db.setDatabaseName('municipal')
self.db.setUserName('postgres')
self.db.setPassword('Administra8080')
estado = self.db.open()
Aquí comienza todo el código, incluso lo pueden correr, la tabla es id number, nombre varchar(50), edad number(2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
import sys
import psycopg2 #archivo de conexcion a postgresql
import pprint
from PyQt5.QtWidgets import QApplication, QDialog, QGridLayout, QMessageBox, QLabel, QPushButton, QLineEdit, QSpinBox
from PyQt5 import uic
from PyQt5.QtSql import QSqlDatabase, QSqlQuery
class Dialogo(QDialog):
def __init__(self):
QDialog.__init__(self)
self.setWindowTitle("Insertar datos") #Título
self.resize(300, 300) #Tamaño inicial
self.setMinimumSize(300, 300) #Tamaño mínimo
self.setMaximumSize(300, 300) #Tamaño máximo
self.layout = QGridLayout() #Crear un layout grid
self.setLayout(self.layout) #Agregar el layout al cuadro de diálogo
self.label_nombre = QLabel("Nombre:") #Etiqueta nombre
self.txt_nombre = QLineEdit() #Campo para ingresar el nombre
self.label_edad = QLabel("Edad:") #Etiqueta edad
self.txt_edad = QSpinBox() #Campo para ingresar la edad
#Botones
self.btn_insertar = QPushButton("Insertar")
self.btn_cancelar = QPushButton("Cancelar")
#Agregar elementos al layout divido en dos columnas
self.layout.addWidget(self.label_nombre, 1, 1)
self.layout.addWidget(self.txt_nombre, 1, 2)
self.layout.addWidget(self.label_edad, 2, 1)
self.layout.addWidget(self.txt_edad, 2, 2)
self.layoutButton = QGridLayout() #Layout para agrupar los botones
#Agregar los botones al layoutButton
self.layoutButton.addWidget(self.btn_insertar, 1, 1)
self.layoutButton.addWidget(self.btn_cancelar, 1, 2)
#Agregar el layoutButton en la fila 3 columna 2
self.layout.addLayout(self.layoutButton, 3, 2)
#Establecer conexión a la base de datos Postgresql
self.db = QSqlDatabase.addDatabase('postgres')
self.db.setHostName('localhost')
self.db.setDatabaseName('municipal')
self.db.setUserName('postgres')
self.db.setPassword('Administra8080')
estado = self.db.open()
self.btn_insertar.clicked.connect(self.Insertar)
self.btn_cancelar.clicked.connect(self.Cancelar)
if estado == False:
print("me fui por la parte del error")
QMessageBox.warning(self, "Error", self.db.lastError().text(), QMessageBox.Discard)
def Insertar(self):
#Variable de conexcion
#Esta parte del codigo funciona correctamente
cadenaconexcion="host='localhost' dbname='municipal' user='postgres' password='Administra8080'"
#Imprimir cadena de conexcion, para verificar errores.
print("Cadena Conexcion a la BD\n ->%s"%(cadenaconexcion))
nombres = self.txt_nombre.text()
edad = self.txt_edad.text()
obj=psycopg2.connect(cadenaconexcion)
#Ejecutar consulta de la BD
objCursor=obj.cursor()
objCursor.execute("INSERT INTO USUARIOS(id,nombre, edad) VALUES(%s,%s,%s)",(edad,nombres,edad))
obj.commit()
objCursor.execute ("SELECT * FROM USUARIOS;")
#Leer Registros
registros=objCursor.fetchall()
#imprimir loos Registros
pprint.pprint(registros)
objCursor.close()
obj.close()
estado = self.db.open()
if estado == False:
print("No deja abrir la base de datos")
QMessageBox.warning(self, "Error", self.db.lastError().text(), QMessageBox.Discard)
else:
nombre = self.txt_nombre.text()
edad = self.txt_edad.text()
sql = "INSERT INTO usuarios(nombre, edad) VALUES (:nombre, :edad)"
consulta = QSqlQuery()
consulta.prepare(sql)
consulta.bindValue(":nombre", nombre)
consulta.bindValue(":edad", edad)
estado = consulta.exec_()
if estado == True:
QMessageBox.information(self, "Correcto", "Datos guardados", QMessageBox.Discard)
else:
QMessageBox.warning(self, "Error", self.db.lastError().text(), QMessageBox.Discard)
self.db.close()
def Cancelar(self):
self.close()
app = QApplication(sys.argv)
dialogo = Dialogo()
dialogo.show()
app.exec_()
Valora esta pregunta


0