I have installed an Ubuntu server! 6.04.4 LTS, mysql 5.7.21 and python 3.5.2. I am developing a script in python that gives me the information of the existing databases. The problem is that executing the script always gives me this error:
Traceback (most recent call last): File "/home/rafa/Bash-toolkit/infobd.py", line 22, in engine = create_engine ('mysql: //' + userbd + ':' + against + '@' + host + ':' + port) File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/engine/init.py", line 424, in create_engine return strategy.create (* args, ** kwargs) File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/engine/strategies.py", line 81, in create dbapi = dialect_cls.dbapi (** dbapi_args) File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/dialects/mysql/mysqldb.py", line 102, in dbapi return import ('MySQLdb') ImportError: No module named 'MySQLdb'
My code is this:
#!/bin/python3
from sqlalchemy import *
#Antes de abrir la conexión, se necesitarán los datos del usuario
#Borramos los espacios con la f(x) strip() https://stackoverflow.com/questions/761804/how-do-i-trim-whitespace-from-a-python-string
print("Introduzca el nombre del usuario")
usuariobd = input().strip()
print("Introduzca su contraseña")
contra = input()
print("Introduzca el host")
host = input().strip()
print("Introduzca el puerto a conectar (3306)")
puerto = str(input())
#Forzamos que el número que llega es un entero https://stackoverflow.com/questions/5424716/how-to-check-if-string-input-is-a-number
print("Se va a realizar la conexión con el usuario "+ usuariobd + "@" + host+ " con el puerto "+puerto)
#comprobamos que no llegan valores vacíos
if len(usuariobd) == 0 or len(contra)==0 or len(host) == 0 or len(puerto) == 0:
print("Debes introducir todos los datos")
exit()
#Probamos la conexión
#https://stackoverflow.com/questions/22689895/list-of-databases-in-sqlalchemy
engine = create_engine('mysql://'+usuariobd+':'+contra+'@'+host+':'+puerto)
#Obtenemos info de las BDS disponibles
consulta = engine.execute('SHOW DATABASES')
listatablas = consulta.fetchall()
print(listatablas)