Python MySQL - controlador mysql-connector
MySQL es el sistema de gestión de bases de datos relacional más popular; si no estás familiarizado con MySQL, puedes leer nuestroTutorial de MySQL.
En este capítulo presentamos el uso demysql-connectorpara conectarse y usar MySQL,mysql-connectorSíMySQLel controlador proporcionado oficialmente.
Podemos usar el comandopippara instalarmysql-connector:
python -m pip install mysql-connector
Usa el siguiente código para probar si mysql-connector se instaló correctamente:
demo_mysql_test.py:
Ejecuta el código anterior; si no se produce ningún error, indica que la instalación fue exitosa.
Nota.Nota:Si tu MySQL es la versión 8.0, el método de verificación del complemento de contraseña ha cambiado. En versiones anteriores era mysql_native_password, en la versión 8.0 es caching_sha2_password, por lo que se necesitan algunos cambios:
Primero modifica la configuración de my.ini:
[mysqld] default_authentication_plugin=mysql_native_passwordLuego ejecuta el siguiente comando en mysql para modificar la contraseña:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';Para más contenido, consulta:Problema de conexión con Python MySQL 8.0。
Crear conexión a la base de datos
Puedes usar el siguiente código para conectarte a la base de datos:
demo_mysql_test.py:
Crear base de datos
Para crear una base de datos se usa la sentencia "CREATE DATABASE"; a continuación se crea una base de datos llamada ejemplo_db:
demo_mysql_test.py:
Antes de crear la base de datos, también podemos usar la sentencia "SHOW DATABASES" para ver si la base de datos existe:
demo_mysql_test.py:
Mostrar la lista de todas las bases de datos:
O podemos conectarnos directamente a la base de datos; si la base de datos no existe, se mostrará un mensaje de error:
demo_mysql_test.py:
Crear tabla de datos
Para crear una tabla de datos se usa la sentencia"CREATE TABLE"; antes de crear la tabla, hay que asegurarse de que la base de datos ya exista. A continuación se crea una tabla llamadasites:
demo_mysql_test.py:

demo_mysql_test.py:
Configuración de clave primaria
Al crear una tabla, generalmente configuramos una clave primaria (PRIMARY KEY). Podemos usar la sentencia"INT AUTO_INCREMENT PRIMARY KEY"para crear una clave primaria; el valor inicial de la clave primaria es 1 y se incrementa gradualmente.
Si nuestra tabla ya ha sido creada, debemos usarALTER TABLEpara agregar la clave primaria a la tabla:
demo_mysql_test.py:
Agregar clave primaria a la tabla sites.
Si aún no has creado la tabla sites, puedes usar directamente el siguiente código para crearla.
demo_mysql_test.py:
Crear la clave primaria para la tabla.
Insertar datos
Para insertar datos se usa la sentencia"INSERT INTO":
demo_mysql_test.py:
Insertar un registro en la tabla sites.
Ejecuta el código; el resultado es:
1 记录插入成功
Inserción por lotes
Para la inserción por lotes se usa el métodoexecutemany(); el segundo parámetro de este método es una lista de tuplas que contiene los datos que queremos insertar:
demo_mysql_test.py:
Insertar varios registros en la tabla sites.
Ejecuta el código; el resultado es:
4 记录插入成功。
Después de ejecutar el código anterior, podemos ver los registros de la tabla de datos:

Si después de insertar el registro de datos queremos obtener el ID de ese registro, podemos usar el siguiente código:
demo_mysql_test.py:
Ejecuta el código; el resultado es:
1 条记录已插入, ID: 6
Consultar datos
Para consultar datos se usa la sentenciaSELECT:
demo_mysql_test.py:
Ejecuta el código; el resultado es:
(1, 'EJEMPLO', 'https://www.example.com') (2, 'Google', 'https://www.google.com') (3, 'Github', 'https://www.github.com') (4, 'Taobao', 'https://www.taobao.com') (5, 'stackoverflow', 'https://www.stackoverflow.com/') (6, 'Zhihu', 'https://www.zhihu.com')
También se pueden leer los datos de campos específicos:
demo_mysql_test.py:
Ejecuta el código; el resultado es:
('EJEMPLO', 'https://www.example.com')
('Google', 'https://www.google.com')
('Github', 'https://www.github.com')
('Taobao', 'https://www.taobao.com')
('stackoverflow', 'https://www.stackoverflow.com/')
('Zhihu', 'https://www.zhihu.com')
Si solo queremos leer un dato, podemos usar el métodofetchone():
demo_mysql_test.py:
Ejecuta el código; el resultado es:
(1, 'EJEMPLO', 'https://www.example.com')
Sentencia de condición WHERE
Si queremos leer datos con condiciones específicas, podemos usar la sentenciawhere:
demo_mysql_test.py
Leer el registro donde el campo name sea EJEMPLO:
Ejecuta el código; el resultado es:
(1, 'EJEMPLO', 'https://www.example.com')
También se pueden usar comodines%:
demo_mysql_test.py
Ejecuta el código; el resultado es:
(1, 'EJEMPLO', 'https://www.example.com') (2, 'Google', 'https://www.google.com')
Para evitar ataques de inyección SQL en las consultas a la base de datos, podemos usar el marcador de posición%spara escapar las condiciones de la consulta:
demo_mysql_test.py
Ordenamiento
Para ordenar los resultados de la consulta se puede usar la sentenciaORDER BY; el método de ordenamiento predeterminado es ascendente y la palabra clave esASC; si se desea configurar el ordenamiento descendente, se puede establecer la palabra claveDESC。
demo_mysql_test.py
Ordenar por el campo name en orden alfabético ascendente:
Ejecuta el código; el resultado es:
(3, 'Github', 'https://www.github.com') (2, 'Google', 'https://www.google.com') (1, 'EJEMPLO', 'https://www.example.com') (5, 'stackoverflow', 'https://www.stackoverflow.com/') (4, 'Taobao', 'https://www.taobao.com') (6, 'Zhihu', 'https://www.zhihu.com')
Ejemplo de ordenamiento descendente:
demo_mysql_test.py
Ordenar por el campo name en orden alfabético descendente:
Ejecuta el código; el resultado es:
(6, 'Zhihu', 'https://www.zhihu.com') (4, 'Taobao', 'https://www.taobao.com') (5, 'stackoverflow', 'https://www.stackoverflow.com/') (1, 'EJEMPLO', 'https://www.example.com') (2, 'Google', 'https://www.google.com') (3, 'Github', 'https://www.github.com')
Limit
Si queremos establecer la cantidad de datos a consultar, podemos usar la sentencia"LIMIT"para especificarlo
demo_mysql_test.py
Leer los primeros 3 registros:
Ejecuta el código; el resultado es:
(1, 'EJEMPLO', 'https://www.example.com') (2, 'Google', 'https://www.google.com') (3, 'Github', 'https://www.github.com')
También se puede especificar la posición inicial; la palabra clave utilizada esOFFSET:
demo_mysql_test.py
Leer 3 registros a partir del segundo:
Ejecuta el código; el resultado es:
(2, 'Google', 'https://www.google.com') (3, 'Github', 'https://www.github.com') (4, 'Taobao', 'https://www.taobao.com')
Eliminar registros
Para eliminar registros se usa la sentencia"DELETE FROM":
demo_mysql_test.py
Eliminar el registro cuyo name sea stackoverflow:
Ejecuta el código; el resultado es:
1 条记录删除
Nota:Debes usar la sentencia de borrado con precaución. Asegúrate de especificar la cláusula WHERE; de lo contrario, se eliminarán todos los datos de la tabla.
Para evitar ataques de inyección SQL en las consultas a la base de datos, podemos usar el marcador de posición%spara escapar las condiciones de la sentencia de borrado:
demo_mysql_test.py
Ejecuta el código; el resultado es:
1 条记录删除
Actualizar datos de la tabla
Para actualizar la tabla de datos se usa la sentencia"UPDATE":
demo_mysql_test.py
Cambiar el campo del registro cuyo name es Zhihu a ZH:
Ejecuta el código; el resultado es:
1 条记录被修改
Nota:La sentencia UPDATE debe asegurarse de especificar la cláusula WHERE; de lo contrario, se actualizarán todos los datos de la tabla.
Para evitar ataques de inyección SQL en las consultas a la base de datos, podemos usar el marcador de posición %s para escapar las condiciones de la sentencia de actualización:
demo_mysql_test.py
Ejecuta el código; el resultado es:
1 条记录被修改
Eliminar tabla
Para eliminar una tabla se usa la sentencia"DROP TABLE"; la palabra claveIF EXISTSse usa para determinar si la tabla existe; solo se elimina si existe: