Hola a todos en esta entrada mostraré un código para listar las tablas contenidas en una base de datos MYSQL en Python. Este es el código el cual iré explicando, cualquier duda me la hacen saber.
importMySQLdb
conn=MySQLdb.connect('localhost','root','root123','estudiantes')
cursor=conn.cursor()
sql="SHOW TABLES;"
cursor.execute(sql)
base = cursor.fetchall() #Se extraen todas las filas de la tablafor fila in base:
print fila[0]
Hostname = 'localhost' Usuario = 'root' Contraseña = 'root123' Nombre base de datos = 'estudiantes' Lo primero que se debe hacer es importar la librería MySQLdb que nos va a permitir usar las bases de datos de MySQL. Conectarse a la base de datos con:
conn = MySQLdb.connect( 'Hostname', 'Usuario', 'Contraseña', 'Nombre base de datos')
Crear un cursor que nos ayudará a realizar las operaciones necesarias con nuestra base de datos
cursor=conn.cursor()
Con el método execute podemos utilizar comandos SQL, en este caso le pedimos que muestre las tablas con el comando "SHOW TABLES;"
sql="SHOW TABLES;"
cursor.execute(sql)
Para terminar se crea un bucle for que recorre e imprime todos los nombres contenidos en la base de datos.
Ejecutando el programa esto retorna, en mi caso me muestra el nombre de 3 tablas de mi base de datos.
Recuerden que si tienen alguna duda, estaré atento,
Hola a todos esta vez se va a exportar la información contenida en una base de datos MySQL, en la interfaz gráfica de PyQT con la ayuda de Python.
1. PASO: Crear la interfaz gráfica en QT:
Se debe crear un nuevo archivo y se escoge el Dialog without Buttons y luego create. Esta interfaz la guardé con el nombre de Base.ui
2. PASO: Insertar el Table View en nuestra ventana:
Como se observa en la imagen, se debe insertar un table View dentro de nuestra ventana Dialog y lo ajustamos al tamaño de la ventana.
3. PASO: Convertir el archivo generado en extensión .ui de QT a .py de Python:
Si aún no sabes convertir de .ui a .py dejo este enlace también hecho por mí haciendo la conversión:
# -*- coding: utf-8 -*-# Form implementation generated from reading ui file 'Base.ui'## Created by: PyQt4 UI code generator 4.11.4## WARNING! All changes made in this file will be lost!fromPyQt4import QtCore, QtGui
try:
_fromUtf8 = QtCore.QString.fromUtf8
exceptAttributeError:
def_fromUtf8(s):
return s
try:
_encoding = QtGui.QApplication.UnicodeUTF8
def_translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig, _encoding)
exceptAttributeError:
def_translate(context, text, disambig):
return QtGui.QApplication.translate(context, text, disambig)
classUi_Dialog(object):
defsetupUi(self, Dialog):
Dialog.setObjectName(_fromUtf8("Dialog"))
Dialog.resize(726, 300)
self.tableView = QtGui.QTableView(Dialog)
self.tableView.setGeometry(QtCore.QRect(20, 10, 691, 271))
self.tableView.setObjectName(_fromUtf8("tableView"))
self.retranslateUi(Dialog)
QtCore.QMetaObject.connectSlotsByName(Dialog)
defretranslateUi(self, Dialog):
Dialog.setWindowTitle(_translate("Dialog", "Dialog", None))
4. PASO: Generar el archivo que consultará la base de datos y utilizará la interfaz gráfica:
A este archivo lo llamé prueba.py y vease lo importante de este código al importar las librerías de PyQt4 para usarlas con base de datos. ( Recuerde que este ejemplo sólo aplica para bases de datos MYSQL)
importsysfromBaseimport*fromPyQt4import QtSql, QtGui
defcreateConnection():
db = QtSql.QSqlDatabase.addDatabase('QMYSQL') #no se modifica.
db.setHostName('localhost') # lo cambian por el nombre que le hayan dado al Host.
db.setDatabaseName('red_fibra') #Lo cambian por el nombre de la base de datos.
db.setUserName('root') #Lo cambian por el nombre de usuario de su base de datos.
db.setPassword('root123') #Lo cambian por la contraseña de su base de datos.
db.open()
print (db.lastError().text())
returnTrueclassMyForm(QtGui.QDialog):
def__init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
self.model = QtSql.QSqlTableModel(self)
self.model.setTable("red3") #Nombre de la tabla que desean en su base de datosself.model.setEditStrategy(QtSql.QSqlTableModel.OnManualSubmit)
self.model.select()
self.ui.tableView.setModel(self.model)
if __name__ =="__main__":
app = QtGui.QApplication(sys.argv)
ifnot createConnection():
sys.exit(1)
myapp = MyForm()
myapp.show()
sys.exit(app.exec_())
Al finalizar este va a ser el resultado.
Espero les haya servido, si tienen alguna duda con gusto la resolveré.
Hola a todos voy a explicar cómo conectar una base de datos en MYSQL con Python.
Primero se debe instalar la librería de MYSQL para la versión de Python. En mi caso poseo la versión de Python 2.7.11. Y esta librería se debe importar en nuestro código.
#!/usr/bin/python# -*- coding: utf-8 -*-importMySQLdb
db = MySQLdb.connect('localhost', 'root','root123', 'estudiantes')
cursor = db.cursor()
cursor.execute("SELECT * FROM red")
data=cursor.fetchall()
cursor.close()
A continuación explicaré las líneas del código anterior.
importMySQLdb
Luego procedemos a realizar la conexión a la base de datos de nuestro interés
Host: 'localhost' Usuario: 'root' Contraseña: 'root123' Nombre de la base de datos: 'estudiantes'
db = MySQLdb.connect('localhost', 'root','root123', 'estudiantes')
Luego de establecer la conexión se procede a la creación de un cursor que nos ayudará a realizar las operaciones necesarias con nuestra base de datos.
cursor = db.cursor()
Luego usamos el método execute para poder ejecutar comandos SQL.
*red es una tabla creada en la base de datos estudiantes.
cursor.execute("SELECT * FROM red")
con data = cursor.fetchone(): se extrae una sola fila de la tabla. con data = cursor.fetchall(): se extraen todas las filas de la tabla. Dependiendo de lo que se vaya a extraer de la table se escoge el data.
data = cursor.fetchone()
data = cursor.fetchall()
y finalmente para desconectarnos de la base de datos.
Hola a todos, hoy voy a compartir cómo realizar la conversión de una interfaz gráfica realizada con PyQt4 que me genera un archivo .ui a un .py ( Extensión de python)
Digamos que el archivo generado en PyQt4 se llama prueba.ui
Al guardarlo queda guardado en la siguiente ruta por defecto: C:\Python34\Lib\site-packages\PyQt4
Luego ejecutamos el símbolo del sistema cmd y buscamos en la carpeta donde instalamos el archivo prueba.ui ó para mayor facilidad estando en la carpeta donde se ubica el archivo que necesitamos hacemos lo denla siguiente imagen:
Después de copiar cmd pulsa la tecla enter y te abrirá el símbolo del sistema en la ubicación.
Estando en la carpeta donde se encuentra sólo basta con ejecutar el comando:
pyuic4 prueba.ui -o prueba.py
Si no queda igual que en la imagen es porque hay problemas en la conversión, si tienen alguna duda me escriben y la responderé en la mayor brevedad.
Es ejercicio también lo modifiqué y digamos que lo reduje en comparación con el descrito en el enlace.
La siguiente imagen corresponde a la ventana inicial que nos mostrará el programa.
Este es el código generado para obtener la ventana de la imagen anterior se llama prueba.py, convertida de .ui a .py. En el BLOG también enseñaré a realizar esta conversión y lo explicaré pronto. Dejaré el enlace en poco tiempo.
importsysfrompruebaimport*classMiformulario(QtGui.QMainWindow):
def__init__(self,parent=None):
QtGui.QMainWindow.__init__(self,parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
QtCore.QObject.connect(self.ui.pushButton_ACEPUSER, QtCore.SIGNAL('clicked()'), self.mensaje_usuario)
QtCore.QObject.connect(self.ui.pushButton_ACEPPASS, QtCore.SIGNAL('clicked()'), self.mensaje_password)
defmensaje_usuario(self):
long=len(self.ui.lineEdit_USUARIO.text())
y=self.ui.lineEdit_USUARIO.text().isalnum()
if y==False:
self.ui.label_MSJUSER.setText("El nombre de usuario puede contener solo letras y números")
self.ui.lineEdit_USUARIO.clear() #Borra el campo donde se escribe la contraseñaiflong<6:
self.ui.label_MSJUSER.setText("El nombre de usuario debe contener al menos 6 caracteres")
self.ui.lineEdit_USUARIO.clear() #Borra el campo donde se escribe la contraseñaiflong>12:
self.ui.label_MSJUSER.setText("El nombre de usuario no puede contener más de 12 caracteres")
self.ui.lineEdit_USUARIO.clear() #Borra el campo donde se escribe la contraseñaiflong>5andlong<13and y ==True:
self.ui.label_MSJUSER.setText("Usuario creado correctamente")
defmensaje_password(self):
user=False#variable de inicialización para identificar espacios
validar=False#variable de inicialización para identificar número de caractereslong=len(self.ui.lineEdit_PASSWORD.text()) #Calcula la longitud de la contraseña
y=self.ui.lineEdit_PASSWORD.text().isalnum()#True si es alfanumérica, False si no lo es.(Nos interesa que sea False)
mayuscula=False#variable iniciliazción para contar las letras mayúsculas
minuscula=False#variable iniciliazción para contar las letras minúsculas
numeros=False#variable iniciliazción para contar los números
correcto=Truefor carac inself.ui.lineEdit_PASSWORD.text(): #ciclo for que recorre caracter por caracter en la contraseñaif carac.isspace()==True: #Saber si el caracter es un espacio
user=True#si encuentra un espacio se cambia el valor a Trueif carac.isupper()==True: #saber si hay mayuscula
mayuscula=True#Si encuentra al menos una Mayuscula cambia a Trueif carac.islower()==True: #saber si hay minúsculas
minuscula=True#Si encuentra al menos una minúscula cambia a Trueif carac.isdigit()==True: #saber si hay números
numeros=True#Si encuentra al menos un número cambia a Trueif user==True: #este valor indica que encontró un espacioself.ui.label_MSJPASS.setText("La contraseña no puede contener espacios")
self.ui.lineEdit_PASSWORD.clear() #Borra el campo donde se escribe la contraseñaelse:
validar=True#se escoge con el fin de garantizar que no hay espacios#y pasar al número mínimo de caracteres que contiene la contraseñaiflong<8and validar==True: #Se garantiza que la contraseña posea mínimo 8 caracteres sin espacios.self.ui.label_MSJPASS.setText("Mínimo 8 caracteres")
self.ui.lineEdit_PASSWORD.clear() #Borra el campo donde se escribe la contraseña
validar=Falseif mayuscula==Trueand minuscula==Trueand numeros==Trueand y==Falseand validar==True:
self.ui.label_MSJPASS.setText("La contraseña es correcta")
else:
correcto=False#Quiere decir que no cumple al menos uno de los requisitosif correcto==Falseand validar==True: #No cumpla al menos un requisito, no contiene espacios y es mayor o igual a 8 caracteres.self.ui.lineEdit_PASSWORD.clear()
self.ui.label_MSJPASS.setText("La contraseña elegida no es segura: debe contener letras minúsculas, mayúsculas, números y al menos 1 carácter no alfanumérico")
if __name__=="__main__":
app=QtGui.QApplication(sys.argv)
myapp = Miformulario()
myapp.show()
sys.exit(app.exec_())
Este es un ejemplo cuando se cumplen todas las condiciones requeridas por el ejercicio.
Muchas Gracias, cualquier duda o sugerencia me dejan el mensaje.
defestado_del_agua():
'''(number)->str Devuelve el estado del agua, dependiendo la temperatura ingresada >>> estado_del_agua() Ingrese la temperatura: 50 El estado del agua es Liquido. >>> estado_del_agua() Ingrese la temperatura: 100 El estado del agua es Solido. '''
Temperatura=int(input('Ingrese la temperatura: '))
if Temperatura <0:
print('El estado del agua es Solido.')
elif Temperatura >=0and Temperatura <96:
print('El estado del agua es Liquido.')
else:
print('El estado del agua es gaseoso.')
Si tienen ejercicios de este tipo que quieran que resuelva me lo dejan en la sección de preguntas de esta entrada