La solución es ejecutar:
import mysql.connector # or from mysql import connector
Porque el módulo connector solo está disponible cuando lo importa explícitamente:
import mysql
print(dir(mysql))
>>> ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__',
'__package__', '__path__', '__spec__']
import mysql.connector
print(dir(mysql))
>>> ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__',
'__package__', '__path__', '__spec__', 'connector']
El __init__ archivo en el módulo mysql no importa el módulo connector .
mysql
|_______ __init__.py # no import at this level
|_______ connector
|________ __init__.py
Esto podría funcionar implícitamente si connector fue importado dentro de __init__ con :from . import connector .