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
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\_id
La 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
Useexecute()
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
Useexecute()
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
Useexecute()
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
Useexecute()
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
Useexecute()
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\_name
está 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\_name
está 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\_name
está 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\_nam
e 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\_name
se 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\_name
es 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.connector
el 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.connector
el 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 customers
tabla de datos denominada, que contiene dos campos name
y 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_name
está el nombre de la vista, column1, column2, ...
es el nombre de la columna a consultar, table_name
es el nombre de la tabla a consultar y condition
es la condición de consulta.
Por ejemplo, podemos crear una employee_view
vista llamada , que consulte las columnas y employee
de la tabla :id
name
salary
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_view
los 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_view
el 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')
username
Entre ellos, password
el nombre de usuario y la contraseña de la base de datos MySQL, host
el nombre de host de la base de datos MySQL, port
el número de puerto de la base de datos MySQL database
y 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 id
campos name
y 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