Aprende python desde cero conmigo (4) programación de base de datos: base de datos MySQL

prefacio

Mirando hacia atrás, hablé sobre la programación de sintaxis de python, los conceptos básicos introductorios obligatorios y la programación de redes, subprocesamiento múltiple/multiproceso/corrutina, etc. no es necesario seguir adelante. La serie de artículos se ha resuelto. :

1. Aprende Python desde cero conmigo (1) Gramática de programación obligatoria
2. Aprende Python desde cero conmigo (2) Programación en red
3. Aprende Python desde cero conmigo (3) Multi-thread/multi-process/ coroutine

Este artículo trata sobre: ​​Programación de base de datos Python: base de datos MySQL

inserte la descripción de la imagen aquí

Esta serie de artículos se basa en las siguientes rutas de aprendizaje, debido al gran contenido:

Aprenda Python desde cero hasta la hoja de ruta avanzada avanzada

Preste atención a la cuenta oficial: campamento de entrenamiento de tecnología python , aprenda paso a paso avanzado

Recursos de Python adecuados para aprendizaje basado en cero y personas avanzadas:

① Notas de tutoriales prácticos del proyecto completo de Python certificado por Tencent PDF
② Más de una docena de temas de entrevistas de Python de los principales fabricantes en PDF
③ Conjunto completo de tutoriales en video de Python (JS inverso avanzado avanzado cero)
④ Cientos de proyectos de combate real + código fuente + notas
⑤ Programación gramática - aprendizaje automático -Desarrollo completo-análisis de datos-rastreador-APP ingeniería inversa y otro conjunto completo de proyectos + documentos
⑥ Intercambio y estudio
⑦ Quiere tomar pedidos a tiempo parcial

El siguiente capítulo: base de datos de Redis

1. Base de datos MySQL

base de datos mysql

1. Conceptos básicos de MySQL

MySQL es un sistema de gestión de bases de datos relacionales y una de las bases de datos de código abierto más populares. Python puede conectarse y operar bases de datos MySQL a través de módulos como MySQLdb y PyMySQL.

Los siguientes son los pasos básicos para que Python se conecte a la base de datos MySQL:

Instale el módulo MySQLdb o PyMySQL

    pip install MySQLdb

o

    pip install PyMySQL

módulo de importación

    import MySQLdb

o

    import pymysql

Conectarse a la base de datos

    # MySQLdb模块
    conn = MySQLdb.connect(host='localhost', user='root', password='password', database='test', port=3306)
    
    # PyMySQL模块
    conn = pymysql.connect(host='localhost', user='root', password='password', database='test', port=3306)

Crear un objeto de cursor

    cursor = conn.cursor()

Ejecutar sentencia SQL

    cursor.execute('SELECT * FROM table_name')

Obtener resultados de consulta

    result = cursor.fetchall()

cerrar cursor y conexión

    cursor.close()
    conn.close()

Los anteriores son los pasos básicos para que Python se conecte a la base de datos MySQL, y las operaciones específicas se pueden ajustar según las necesidades reales.

2. En la base de datos MySQL, los tipos de datos comunes incluyen :

  • Tipos numéricos : incluidos enteros, punto flotante, doble precisión, etc.

  • Tipo de cadena : incluye cadena de longitud fija, cadena de longitud variable, tipo de texto, etc.

  • Tipos de fecha y hora : incluyendo fecha, hora, fecha y hora, etc.

  • Tipo booleano : incluye valores verdaderos y falsos.

  • Tipo binario : incluye datos binarios, imagen, audio, etc.

  • Tipo enumerado : incluye un conjunto de valores predefinidos.

  • Tipo de colección : incluye un conjunto predefinido de valores, pero se puede seleccionar más de uno.

En Python, puede usar bibliotecas como MySQLdb o pymysql para conectarse a la base de datos MySQL y usar instrucciones SQL para crear, modificar, consultar y eliminar tablas de datos. Al crear una tabla de datos, debe especificar el tipo de datos de cada campo para garantizar la corrección e integridad de los datos.

3. En una base de datos MySQL, una restricción es una regla que se usa para limitar los datos en una tabla. Las siguientes son restricciones de uso común en MySQL :

  • Restricción NOT NULL : esta restricción se utiliza para garantizar que los valores en la columna no sean nulos.

  • Restricción ÚNICA : esta restricción se utiliza para garantizar que los valores en la columna sean únicos.

  • Restricción PRIMARY KEY : esta restricción se utiliza para establecer la columna como la clave principal para garantizar que cada fila de datos tenga un identificador único.

  • Restricción FOREIGN KEY : Esta restricción se utiliza para garantizar que los valores de una columna coincidan con los valores de otra tabla, y suele utilizarse para establecer relaciones entre tablas.

  • Restricción CHECK : esta restricción se utiliza para garantizar que los valores en la columna cumplan con las condiciones especificadas.

  • Restricción DEFAULT : esta restricción se utiliza para proporcionar un valor predeterminado para una columna cuando se inserta una nueva fila.

Por ejemplo, el siguiente es un ejemplo de una tabla MySQL con restricciones:

    CREATE TABLE students (
      id INT PRIMARY KEY,
      name VARCHAR(50) NOT NULL,
      age INT CHECK (age >= 18),
      email VARCHAR(50) UNIQUE,
      major_id INT,
      FOREIGN KEY (major_id) REFERENCES majors(id)
    );

En el ejemplo anterior, la columna id se establece como la clave principal, lo que garantiza que cada fila de datos tenga un identificador único. La columna de nombre se establece en NOT NULL para garantizar que el valor de esta columna no sea nulo. La columna de edad se establece como una restricción CHECK para garantizar que los valores en esta columna sean mayores o iguales a 18. La columna de correo electrónico se establece como una restricción ÚNICA, lo que garantiza que los valores de esta columna sean únicos. major\_idLa columna se establece como una restricción FOREIGN KEY, lo que garantiza que los valores de esta columna coincidan con la columna id en la tabla de especialidades.

4. Para operar la base de datos MySQL en Python, debe usar bibliotecas de terceros como MySQLdb o pymysql

Algunas operaciones básicas de la base de datos se describen a continuación.

  • Conexión a la base de datos
    El código para conectarse a la base de datos utilizando la biblioteca MySQLdb es el siguiente:
    import MySQLdb
    
    # 打开数据库连接
    db = MySQLdb.connect(host="localhost", user="root", passwd="password", db="test")
    
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    
    # 关闭数据库连接
    db.close()

El código para conectarse a la base de datos usando la biblioteca pymysql es el siguiente:

    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect(host="localhost", user="root", passwd="password", db="test")
    
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    
    # 关闭数据库连接
    db.close()
  • Crear tablas
    Use execute()métodos para ejecutar sentencias SQL para crear tablas, por ejemplo:
    # 创建表
    sql = """CREATE TABLE EMPLOYEE (
             FIRST_NAME  CHAR(20) NOT NULL,
             LAST_NAME  CHAR(20),
             AGE INT,
             SEX CHAR(1),
             INCOME FLOAT )"""
    
    cursor.execute(sql)
  • Insertar datos
    Use execute()métodos para ejecutar sentencias SQL para insertar datos, por ejemplo:
    # 插入数据
    sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
             LAST_NAME, AGE, SEX, INCOME)
             VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
    
    cursor.execute(sql)
  • Consultar datos
    Use execute()métodos para ejecutar sentencias SQL para consultar datos, por ejemplo:
    # 查询数据
    sql = "SELECT * FROM EMPLOYEE WHERE INCOME > %s" % (1000)
    cursor.execute(sql)
    results = cursor.fetchall()
    for row in results:
        fname = row[0]
        lname = row[1]
        age = row[2]
        sex = row[3]
        income = row[4]
        print("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % (fname, lname, age, sex, income))
  • Actualizar datos
    Use execute()métodos para ejecutar sentencias SQL para actualizar datos, por ejemplo:
    # 更新数据
    sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
    cursor.execute(sql)
  • Eliminar datos
    Use execute()métodos para ejecutar sentencias SQL para eliminar datos, por ejemplo:
    # 删除数据
    sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
    cursor.execute(sql)

5. En MySQL, la tabla de datos es la unidad básica para almacenar datos.A
continuación se presentan algunas operaciones de tabla de datos de uso común.

  • Crear una tabla de datos
    La sintaxis para crear una tabla de datos es la siguiente:
    CREATE TABLE table_name (
       column1 datatype,
       column2 datatype,
       column3 datatype,
       .....
    );

Entre ellos, table\_nameestá el nombre de la tabla de datos que se creará, column1, column2, column3, etc. son los nombres de las columnas en la tabla de datos, y datatype es el tipo de datos de la columna.

Por ejemplo, para crear una tabla de datos llamada estudiantes, que contiene tres columnas de id, nombre y edad, y los tipos de datos son int, varchar(20) e int, se puede usar la siguiente declaración:

    CREATE TABLE students (
       id int,
       name varchar(20),
       age int
    );
  • Inserción de datos
    La sintaxis para insertar datos es la siguiente:
    INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);

Entre ellos, table\_nameestá el nombre de la tabla de datos para insertar datos, columna1, columna2, columna3, etc. son los nombres de las columnas en la tabla de datos, y valor1, valor2, valor3, etc. son los datos que se insertarán.

Por ejemplo, para insertar un dato en la tabla de datos de los estudiantes, la identificación es 1, el nombre es "Tom" y la edad es 18, puede usar la siguiente declaración:

    INSERT INTO students (id, name, age) VALUES (1, 'Tom', 18);
  • Consulta de datos
    La sintaxis para consultar datos es la siguiente:
    SELECT column1, column2, column3, ... FROM table_name WHERE condition;

Entre ellos, table\_nameestá el nombre de la tabla de datos cuyos datos se van a consultar, column1, column2, column3, etc. son los nombres de las columnas a consultar, y condition es la condición de consulta.

Por ejemplo, para consultar todos los datos en la tabla de datos de estudiantes, puede usar la siguiente declaración:

    SELECT * FROM students;
  • Actualización de datos
    La sintaxis para actualizar datos es la siguiente:
    UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition;

Entre ellos, table\_name es el nombre de la tabla de datos cuyos datos se actualizarán, column1, column2, etc. son los nombres de las columnas que se actualizarán, value1, value2, etc. son los valores que se actualizarán y condition es la condición de actualización.

Por ejemplo, para actualizar la edad del registro con id 1 en la tabla de datos de estudiantes a 20, puede usar la siguiente declaración:

    UPDATE students SET age = 20 WHERE id = 1;
  • Eliminación de datos
    La sintaxis para eliminar datos es la siguiente:
    DELETE FROM table_name WHERE condition;

Entre ellos, table\_namese encuentra el nombre de la tabla de datos cuyos datos se eliminarán y condition es la condición de eliminación.

Por ejemplo, para eliminar el registro cuyo id es 1 en la tabla de datos de estudiantes, puede usar la siguiente declaración:

    DELETE FROM students WHERE id = 1;
  • Eliminación de una tabla de datos
    La sintaxis para eliminar una tabla de datos es la siguiente:
    DROP TABLE table_name;

donde table\_namees el nombre de la tabla de datos a eliminar.

Por ejemplo, para eliminar la tabla de datos de los estudiantes, puede usar la siguiente instrucción:

    DROP TABLE students;

6. La operación básica de agregar, eliminar, modificar y verificar la base de datos MySQL con Python es la siguiente :

  • Conéctese a la base de datos
    Use la biblioteca pymysql en Python para conectarse a la base de datos MySQL El código de muestra es el siguiente:
    import pymysql

    # 打开数据库连接
    db = pymysql.connect(host="localhost", user="root", password="123456", database="test")
    
    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
    
    # 关闭数据库连接
    db.close()
  • Crear una tabla de datos
    Use la biblioteca pymysql en Python para crear una tabla de datos en la base de datos MySQL.El código de ejemplo es el siguiente:
    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect(host="localhost", user="root", password="123456", database="test")
    
    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
    
    # 创建数据表SQL语句
    sql = """CREATE TABLE EMPLOYEE (
             FIRST_NAME  CHAR(20) NOT NULL,
             LAST_NAME  CHAR(20),
             AGE INT,  
             SEX CHAR(1),
             INCOME FLOAT )"""
    
    # 执行SQL语句
    cursor.execute(sql)
    
    # 关闭数据库连接
    db.close()
  • Insertar datos
    Use la biblioteca pymysql en Python para insertar datos en la tabla de datos en la base de datos MySQL.El código de muestra es el siguiente:
    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect(host="localhost", user="root", password="123456", database="test")
    
    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
    
    # SQL 插入语句
    sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
             LAST_NAME, AGE, SEX, INCOME)
             VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
    
    # 执行SQL语句
    cursor.execute(sql)
    
    # 提交到数据库执行
    db.commit()
    
    # 关闭数据库连接
    db.close()
  • Consultar datos
    Use la biblioteca pymysql en Python para consultar datos de las tablas de datos en la base de datos MySQL.El código de ejemplo es el siguiente:
    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect(host="localhost", user="root", password="123456", database="test")
    
    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
    
    # SQL 查询语句
    sql = "SELECT * FROM EMPLOYEE \
           WHERE INCOME > %s" % (1000)
    
    # 执行SQL语句
    cursor.execute(sql)
    
    # 获取所有记录列表
    results = cursor.fetchall()
    for row in results:
        fname = row[0]
        lname = row[1]
        age = row[2]
        sex = row[3]
        income = row[4]
        # 打印结果
        print("fname=%s,lname=%s,age=%d,sex=%s,income=%d" % (fname, lname, age, sex, income))
    
    # 关闭数据库连接
    db.close()
  • Actualizar datos
    Utilice la biblioteca pymysql en Python para actualizar los datos de la tabla de datos en la base de datos MySQL. El código de ejemplo es el siguiente:
    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect(host="localhost", user="root", password="123456", database="test")
    
    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
    
    # SQL 更新语句
    sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
    
    # 执行SQL语句
    cursor.execute(sql)
    
    # 提交到数据库执行
    db.commit()
    
    # 关闭数据库连接
    db.close()
  • Eliminar datos
    Use la biblioteca pymysql en Python para eliminar los datos de la tabla de datos en la base de datos MySQL.El código de muestra es el siguiente:
    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect(host="localhost", user="root", password="123456", database="test")
    
    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
    
    # SQL 删除语句
    sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
    
    # 执行SQL语句
    cursor.execute(sql)
    
    # 提交到数据库执行
    db.commit()
    
    # 关闭数据库连接
    db.close()

2. Consulta avanzada de MySQL

1. Crear base de datos, tabla de datos

  • Crear una base de datos:

Use Python para conectarse a la base de datos MySQL, puede usar mysql.connectorel módulo, el código de muestra es el siguiente:

    import mysql.connector
    
    # 连接MySQL数据库
    mydb = mysql.connector.connect(
      host="localhost",
      user="root",
      password="123456"
    )
    
    # 创建数据库
    mycursor = mydb.cursor()
    mycursor.execute("CREATE DATABASE mydatabase")
  • Crear una tabla de datos:

Use Python para conectarse a la base de datos MySQL, puede usar mysql.connectorel módulo, el código de muestra es el siguiente:

    import mysql.connector
    
    # 连接MySQL数据库
    mydb = mysql.connector.connect(
      host="localhost",
      user="root",
      password="123456",
      database="mydatabase"
    )
    
    # 创建数据表
    mycursor = mydb.cursor()
    mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")

El código anterior crea una customerstabla de datos denominada, que contiene dos campos namey address, ambos de tipoVARCHAR(255)

2. Consulta de condiciones

La consulta condicional se refiere a filtrar los datos que cumplen con los requisitos de acuerdo con ciertas condiciones. Las declaraciones de consulta condicional de uso común incluyen WHERE, AND, OR, IN, BETWEEN, etc.

  • Declaración WHERE
    La declaración WHERE se utiliza para especificar condiciones de consulta, la sintaxis es la siguiente:
    SELECT column1, column2, ... FROM table_name WHERE condition;

Entre ellos, condición es la condición de consulta, puede usar operadores de comparación (=, <, >, <=, >=, <>), operadores lógicos (AND, OR, NOT) y comodines (%, _), etc.

Por ejemplo, para consultar la información de alumnos cuya edad es mayor o igual a 18 años:

    SELECT * FROM students WHERE age >= 18;
  • Declaración AND La
    declaración AND se utiliza para satisfacer múltiples condiciones al mismo tiempo, la sintaxis es la siguiente:
    SELECT column1, column2, ... FROM table_name WHERE condition1 AND condition2 AND ...;

Por ejemplo, para consultar la información de alumnos cuya edad es mayor o igual a 18 años y cuyo género es femenino:

SELECT * FROM students WHERE age >= 18 AND gender = '女';
  • Sentencia OR
    La sentencia OR se utiliza para satisfacer cualquiera de varias condiciones. La sintaxis es la siguiente:
    SELECT column1, column2, ... FROM table_name WHERE condition1 OR condition2 OR ...;

Por ejemplo, para consultar la información de alumnos cuya edad es mayor o igual a 18 años o cuyo género es femenino:

    SELECT * FROM students WHERE age >= 18 OR gender = '女';
  • Instrucción IN
    La instrucción IN se utiliza para especificar múltiples valores, la sintaxis es la siguiente:
    SELECT column1, column2, ... FROM table_name WHERE column_name IN (value1, value2, ...);

Por ejemplo, para consultar la información del estudiante de los números de estudiante 1001, 1002 y 1003:

    SELECT * FROM students WHERE id IN (1001, 1002, 1003);
  • BETWEEN declaración
    BETWEEN declaración se utiliza para especificar un rango, la sintaxis es la siguiente:
    SELECT column1, column2, ... FROM table_name WHERE column_name BETWEEN value1 AND value2;

Por ejemplo, para consultar información de estudiantes entre 18 y 20 años:

    SELECT * FROM students WHERE age BETWEEN 18 AND 20;

Lo anterior es la sintaxis básica de la consulta condicional, que se puede usar de manera flexible según las necesidades reales.

3. En MySQL, puede usar la cláusula ORDER BY para ordenar los resultados de la consulta

La cláusula ORDER BY puede ir seguida de uno o más nombres de columna, separados por comas. De forma predeterminada, la clasificación es ascendente y la palabra clave DESC se puede utilizar para la clasificación descendente.

Por ejemplo, la siguiente declaración se clasificará en orden ascendente por la columna de edad:

    SELECT * FROM students ORDER BY age;

La siguiente declaración se ordenará en orden descendente por la columna de edad:

    SELECT * FROM students ORDER BY age DESC;

Puede especificar varias columnas para ordenar al mismo tiempo, por ejemplo:

    SELECT * FROM students ORDER BY grade DESC, age;

La declaración anterior se ordenará primero en orden descendente según la columna de calificación y, si hay los mismos valores de calificación, luego se ordenará en orden ascendente según la columna de edad.

Tenga en cuenta que la cláusula ORDER BY debe colocarse al final de la instrucción de consulta.

4. En MySQL, la agrupación es una operación de clasificación de datos según un campo determinado

La agrupación se puede utilizar para datos estadísticos, calculando el valor de funciones agregadas como promedio, máximo, mínimo, etc.

Aquí hay un ejemplo simple, suponiendo que tenemos una tabla de estudiantes con nombres, edades y calificaciones de los estudiantes:

    CREATE TABLE students (
        id INT PRIMARY KEY AUTO_INCREMENT,
        name VARCHAR(50),
        age INT,
        score INT
    );
    
    INSERT INTO students (name, age, score) VALUES
        ('Tom', 18, 90),
        ('Jerry', 19, 80),
        ('Lucy', 18, 95),
        ('Lily', 20, 85),
        ('Bob', 19, 75);

Ahora queremos agrupar por edad y contar la calificación promedio y la calificación más alta de cada grupo de edad, podemos usar la siguiente instrucción SQL:

    SELECT age, AVG(score) AS avg_score, MAX(score) AS max_score
    FROM students
    GROUP BY age;

Los resultados de la ejecución son los siguientes:

    +-----+-----------+----------+
    | age | avg_score | max_score |
    +-----+-----------+----------+
    |  18 | 92.5000   |       95 |
    |  19 | 77.5000   |       80 |
    |  20 | 85.0000   |       85 |
    +-----+-----------+----------+

Como puede ver, hemos agrupado por edad y contabilizado los puntajes promedio y más alto para cada grupo de edad.

En la consulta de grupo, también podemos usar la cláusula HAVING para filtrar los datos agrupados. Por ejemplo, si queremos saber el grupo de edad cuya puntuación media es superior a 85, podemos utilizar la siguiente sentencia SQL:

    SELECT age, AVG(score) AS avg_score
    FROM students
    GROUP BY age
    HAVING avg_score > 85;

Los resultados de la ejecución son los siguientes:

    +-----+-----------+
    | age | avg_score |
    +-----+-----------+
    |  18 | 92.5000   |
    |  20 | 85.0000   |
    +-----+-----------+

Se puede observar que sólo nos quedamos con el grupo de edad cuya puntuación media es superior a 85 puntos.

3. Aplicación avanzada MySQL

1. ver

En MySQL, una vista es una tabla virtual compuesta por resultados de consultas de una o más tablas básicas. Las vistas no almacenan datos, pero generan dinámicamente conjuntos de resultados basados ​​en declaraciones de consulta. Las vistas pueden simplificar operaciones de consulta complejas, mejorar la eficiencia de las consultas y proteger la seguridad de los datos.

La sintaxis para crear una vista es la siguiente:

    CREATE VIEW view_name AS
    SELECT column1, column2, ...
    FROM table_name
    WHERE condition;

Entre ellos, view_nameestá el nombre de la vista, column1, column2, ...es el nombre de la columna a consultar, table_namees el nombre de la tabla a consultar y conditiones la condición de consulta.

Por ejemplo, podemos crear una employee_viewvista llamada , que consulte las columnas y employeede la tabla :idnamesalary

    CREATE VIEW employee_view AS
    SELECT id, name, salary
    FROM employee;

La sintaxis para consultar una vista es similar a la de consultar una tabla:

    SELECT * FROM view_name;

Por ejemplo, podemos consultar employee_viewlos resultados de una vista:

    SELECT * FROM employee_view;

Las vistas también se pueden actualizar, pero se deben cumplir ciertas condiciones. Específicamente, las vistas pueden realizar los siguientes tipos de operaciones de actualización:

  • Las actualizaciones se realizan en vistas de una sola tabla, es decir, vistas que implican solo una tabla base.
  • Actualice una vista de tablas múltiples, pero la operación de actualización solo puede involucrar ciertas columnas de una tabla básica, y estas columnas deben ser únicas.
    La sintaxis para actualizar una vista es la siguiente:
    UPDATE view_name
    SET column1 = value1, column2 = value2, ...
    WHERE condition;

Por ejemplo, podemos actualizar employee_viewel salario del empleado con id 1 en la vista:

    UPDATE employee_view
    SET salary = 5000
    WHERE id = 1;

Cabe señalar que cuando se actualiza una vista, en realidad se actualizan los datos de la tabla base, no la vista en sí. Por lo tanto, se deben cumplir las restricciones de la tabla básica al actualizar la vista; de lo contrario, la actualización fallará.

Además de las operaciones de actualización, las vistas también pueden realizar operaciones de inserción y eliminación, y la sintaxis específica es similar a las operaciones de tabla. Sin embargo, debe tenerse en cuenta que las operaciones de inserción y eliminación solo pueden involucrar una tabla básica, y se deben cumplir las restricciones de la tabla básica.

2. Asuntos

Una transacción es un conjunto de operaciones que, o todas se ejecutan con éxito o ninguna de ellas ejecuta. En MySQL, las transacciones usan propiedades ACID para garantizar la consistencia y confiabilidad de los datos.

ÁCIDO se refiere a:

  • Atomicidad : todas las operaciones en una transacción se ejecutan con éxito o no se ejecutan en absoluto.
  • Consistencia : antes y después de la ejecución de la transacción, la integridad y las restricciones de los datos permanecen sin cambios.
  • Aislamiento : las transacciones están aisladas entre sí y la ejecución de una transacción no afectará la ejecución de otras transacciones.
  • Durabilidad : una vez que se confirma una transacción, la modificación de los datos es permanente y no se perderá incluso si el sistema falla.

En MySQL, use las declaraciones BEGIN, COMMIT y ROLLBACK para controlar la confirmación y reversión de transacciones.

  • BEGIN : Comienza una transacción.
  • COMMIT : Confirma una transacción y guarda permanentemente todas las operaciones en la transacción en la base de datos.
  • ROLLBACK : Revertir una transacción, deshaciendo todas las operaciones en la transacción.
    Aquí hay un ejemplo usando transacciones:
    import mysql.connector
    
    # 连接数据库
    mydb = mysql.connector.connect(
      host="localhost",
      user="root",
      password="123456",
      database="mydatabase"
    )
    
    # 获取游标
    mycursor = mydb.cursor()
    
    # 开始事务
    mycursor.execute("START TRANSACTION")
    
    # 执行操作
    try:
      sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
      val = ("John", "Highway 21")
      mycursor.execute(sql, val)
    
      sql = "UPDATE customers SET address = 'Park Lane 38' WHERE address = 'Highway 21'"
      mycursor.execute(sql)
    
      # 提交事务
      mydb.commit()
    
    except:
      # 回滚事务
      mydb.rollback()
    
    # 关闭连接
    mydb.close()

En el ejemplo anterior, usamos START TRANSACTION para iniciar una transacción y luego realizamos dos operaciones: insertar un dato y actualizar un dato. Si ambas operaciones se realizan con éxito, COMMIT se usa para confirmar la transacción; de lo contrario, ROLLBACK se usa para revertir la transacción.

3. Uso de pyMySQL

pyMySQL es una biblioteca de terceros en Python para conectarse a bases de datos MySQL. Proporciona algunas API fáciles de usar para operaciones de base de datos convenientes.

  • Instale pyMySQL:

Se puede instalar usando el comando pip:

    pip install pymysql
  • Conéctese a la base de datos MySQL:

Antes de usar pyMySQL, primero debe conectarse a la base de datos MySQL. Para conectarse a la base de datos MySQL, debe especificar información como el nombre de host, el nombre de usuario, la contraseña y el nombre de la base de datos. El siguiente código se puede utilizar para conectarse:

    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect(host="localhost", user="root", password="password", database="test")
    
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    
    # 关闭数据库连接
    db.close()

Entre ellos, el host representa el nombre del host, el usuario representa el nombre de usuario, la contraseña representa la contraseña y la base de datos representa el nombre de la base de datos que se conectará.

  • Ejecute la sentencia SQL:

Después de conectarse a la base de datos MySQL, puede usar el objeto de cursor para ejecutar instrucciones SQL. pyMySQL admite la ejecución de todas las instrucciones SQL, incluidas las operaciones de consulta, inserción, actualización, eliminación y otras. La siguiente es una operación de consulta de ejemplo:

    import pymysql
    
    # 打开数据库连接
    db = pymysql.connect(host="localhost", user="root", password="password", database="test")
    
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    
    # 执行SQL语句
    sql = "SELECT * FROM students"
    cursor.execute(sql)
    
    # 获取所有记录列表
    results = cursor.fetchall()
    for row in results:
        id = row[0]
        name = row[1]
        age = row[2]
        gender = row[3]
        print("id=%d,name=%s,age=%d,gender=%s" % (id, name, age, gender))
    
    # 关闭数据库连接
    db.close()

Antes de ejecutar la instrucción SQL, debe utilizar cursor()el método para obtener el cursor de operación. La ejecución de sentencias SQL puede utilizar execute()el método, que acepta una sentencia SQL como parámetro. La operación de consulta puede usar fetchall()el método para obtener una lista de todos los registros y luego recorrer cada registro.

Las operaciones de inserción, actualización y eliminación también pueden usar execute()métodos, simplemente pase la instrucción SQL correspondiente como parámetro.

Lo anterior es el uso básico de pyMySQL. Para una API más detallada, consulte la documentación oficial.

4. Estructura MySQL ORM-SQLAIchemy

SQLAlchemy es un conjunto de herramientas SQL de Python y un marco ORM que proporciona un amplio conjunto de herramientas que hacen que trabajar con SQL en Python sea más fácil y flexible. El objetivo principal de SQLAlchemy es proporcionar un acceso eficiente y de alto rendimiento a las bases de datos SQL y es compatible con una variedad de bases de datos relacionales, como MySQL, PostgreSQL, Oracle, Microsoft SQL Server, etc.

El marco ORM de SQLAlchemy proporciona una forma de asignar objetos Python a tablas de bases de datos relacionales, lo que permite a los desarrolladores usar el lenguaje Python para operar la base de datos sin tener que usar el lenguaje SQL directamente. El marco ORM puede crear automáticamente tablas de bases de datos, insertar datos, actualizar datos, eliminar datos y otras operaciones, y también admite funciones avanzadas como transacciones, grupos de conexiones y cachés.

Aquí hay un ejemplo usando el marco SQLAlchemy ORM:

    from sqlalchemy import create_engine, Column, Integer, String
    from sqlalchemy.orm import sessionmaker
    from sqlalchemy.ext.declarative import declarative_base
    
    # 创建数据库连接
    engine = create_engine('mysql+pymysql://username:password@host:port/database')
    
    # 创建Session类
    Session = sessionmaker(bind=engine)
    
    # 创建Base类
    Base = declarative_base()
    
    # 定义User类
    class User(Base):
        __tablename__ = 'users'
        id = Column(Integer, primary_key=True)
        name = Column(String(50))
        age = Column(Integer)
    
    # 创建表
    Base.metadata.create_all(engine)
    
    # 创建Session实例
    session = Session()
    
    # 插入数据
    user = User(name='Tom', age=20)
    session.add(user)
    session.commit()
    
    # 查询数据
    users = session.query(User).all()
    for user in users:
        print(user.name, user.age)
    
    # 更新数据
    user = session.query(User).filter_by(name='Tom').first()
    user.age = 21
    session.commit()
    
    # 删除数据
    user = session.query(User).filter_by(name='Tom').first()
    session.delete(user)
    session.commit()
    
    # 关闭Session
    session.close()

En el ejemplo anterior, primero creamos una conexión de base de datos, luego creamos una clase de sesión y una clase base. La clase de sesión se usa para crear instancias de sesión y la clase base se usa para definir la relación de mapeo de ORM. Definimos una clase de Usuario, que hereda de la clase Base, y define el nombre de la tabla y los campos. Luego Base.metadata.create_all()creamos la tabla usando el método. Luego creamos una instancia de Sesión y usamos session.add()el método para insertar un dato. Use session.query()métodos para consultar datos y session.commit()métodos para confirmar transacciones. También demostramos cómo actualizar y eliminar datos, y finalmente usamos session.close()el método para cerrar Session.

El marco SQLAlchemy ORM proporciona características ricas y opciones de configuración flexibles para satisfacer diversas necesidades. Al mismo tiempo, también tiene una cierta curva de aprendizaje y lleva algún tiempo aprenderlo y dominarlo.

1. Un ejemplo del uso de SQLAlchemy para consultar una base de datos MySQL

Primero, se debe instalar la biblioteca SQLAlchemy:

    pip install sqlalchemy

Luego, conéctese a la base de datos MySQL:

    from sqlalchemy import create_engine

    # 连接MySQL数据库
    engine = create_engine('mysql+pymysql://username:password@host:port/database')

usernameEntre ellos, passwordel nombre de usuario y la contraseña de la base de datos MySQL, hostel nombre de host de la base de datos MySQL, portel número de puerto de la base de datos MySQL databasey el nombre de la base de datos que se conectará.

A continuación, defina un modelo ORM:

    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy import Column, Integer, String
    
    # 定义ORM模型
    Base = declarative_base()
    
    class User(Base):
        __tablename__ = 'users'
    
        id = Column(Integer, primary_key=True)
        name = Column(String(50))
        age = Column(Integer)

Este modelo ORM corresponde a la tabla de usuarios en la base de datos MySQL, incluidos tres idcampos namey age.

Luego, consulta los datos usando SQLAlchemy:

    from sqlalchemy.orm import sessionmaker
    
    # 创建Session
    Session = sessionmaker(bind=engine)
    session = Session()
    
    # 查询所有用户
    users = session.query(User).all()
    for user in users:
        print(user.id, user.name, user.age)
    
    # 查询年龄大于等于18岁的用户
    users = session.query(User).filter(User.age >= 18).all()
    for user in users:
        print(user.id, user.name, user.age)
    
    # 查询年龄大于等于18岁的用户,并按照年龄从小到大排序
    users = session.query(User).filter(User.age >= 18).order_by(User.age).all()
    for user in users:
        print(user.id, user.name, user.age)

El código anterior consulta respectivamente a todos los usuarios, usuarios cuya edad es mayor o igual a 18 años y usuarios cuya edad es mayor o igual a 18 años, ordena los resultados en orden ascendente de edad y los imprime.

Además de los ejemplos anteriores, SQLAlchemy también admite más métodos de consulta, como consulta de paginación, consulta de agregación, etc.

Lo anterior es sobre el análisis de contenido de la programación de la base de datos python Base de datos MySQL

Esta serie de artículos se basa en las siguientes rutas de aprendizaje, debido al gran contenido:

Aprenda Python desde cero hasta la hoja de ruta avanzada avanzada

Preste atención a la cuenta oficial: campamento de entrenamiento de tecnología python , aprenda paso a paso avanzado

Recursos de Python adecuados para aprendizaje basado en cero y personas avanzadas:

① Notas de tutoriales prácticos del proyecto completo de Python certificado por Tencent PDF
② Más de una docena de temas de entrevistas de Python de los principales fabricantes en PDF
③ Conjunto completo de tutoriales en video de Python (JS inverso avanzado avanzado cero)
④ Cientos de proyectos de combate real + código fuente + notas
⑤ Programación gramática - aprendizaje automático -Desarrollo completo-análisis de datos-rastreador-APP ingeniería inversa y otro conjunto completo de proyectos + documentos
⑥ Intercambio y estudio
⑦ Quiere tomar pedidos a tiempo parcial

El siguiente capítulo: base de datos de Redis

Supongo que te gusta

Origin blog.csdn.net/ch950401/article/details/131623120
Recomendado
Clasificación