API de base de datos Python (API de base de datos)
Aunque Python necesita usar diferentes módulos para operar diferentes bases de datos, los diferentes módulos de bases de datos no están exentos de reglas, porque básicamente cumplen con el protocolo DB API desarrollado por Python. La última versión del protocolo es 2.0. Muchas operaciones de estos módulos de bases de datos son en realidad las mismas. A continuación se presenta primero el contenido común entre diferentes módulos de bases de datos.
Variables globales
Python recomienda que los módulos de base de datos que admiten DB API 2.0 proporcionen las siguientes tres variables globales:
apilevel: esta variable global muestra las variables globales del módulo de base de datos. Número de versión de API. Para los módulos de base de datos que admiten la versión 2.0 de la API de base de datos, el valor de esta variable suele ser 2.0. Si esta variable no existe, es posible que el módulo de base de datos no admita actualmente DB API 2.0. Los lectores deberían considerar optar por utilizar otros módulos de bases de datos que admitan esta base de datos.
Threadsafety: esta variable global especifica el nivel de seguridad de subprocesos del módulo de base de datos. El valor del nivel es de 0 a 3, donde 3 significa que el módulo es completamente seguro para subprocesos y 1 significa que el módulo tiene seguridad parcial de subprocesos. El módulo se puede compartir, pero la conexión no se puede compartir; 0 significa que el hilo no puede compartir el módulo en absoluto.
paramstyle: Esta variable global especifica qué estilo de parámetros se puede usar cuando una declaración SQL requiere parámetros. Esta variable puede devolver el siguiente valor de variable:
formato: indica el uso de una cadena de formato estándar de Python para representar parámetros en la declaración SQL. Por ejemplo, si usa s donde se requieren parámetros en un programa, el programa puede especificar valores de parámetros para esos parámetros.
pyformat: Indica el uso de códigos de formato extendido para representar parámetros en sentencias SQL. Por ejemplo, al usar (nombre), puede usar un diccionario que contenga la clave como nombre para especificar el valor del parámetro.
qmark: Indica el uso de signos de interrogación (?) para representar parámetros en sentencias SQL. Hay varios parámetros en la declaración SQL, todos los cuales se reemplazan por signos de interrogación.
numérico: Indica el uso de marcadores de posición numéricos (:N) para representar parámetros en sentencias SQL. Por ejemplo: 1 representa un parámetro, :2 también representa un parámetro. Estos números son equivalentes a los nombres de los parámetros, por lo que no necesariamente tienen que ser consecutivos.
named: Indica el uso de marcadores de posición con nombre (:name) para representar parámetros en sentencias SQL. Por ejemplo: nombre representa un parámetro y: edad también representa un parámetro.
Al verificar estas variables globales, puede tener una comprensión general del estilo de programación externa del módulo API de base de datos. En cuanto a los detalles de implementación interna del módulo, es responsabilidad exclusiva del implementador del módulo. y los desarrolladores normalmente no necesitan preocuparse.
Clases principales de API de base de datos
Los módulos de base de datos que cumplen con el protocolo DB API 2.0 generalmente proporcionan una función connect(), que se utiliza para conectarse a la base de datos y devolver la conexión a la base de datos. objeto.
Los objetos de conexión a bases de datos suelen tener los siguientes métodos y propiedades:
cursor(factory=Cursor): abre el cursor.
commit(): envía la transacción.
rollback(): transacción de reversión.
close(): Cierra la conexión a la base de datos.
isolation_level: Devuelve o establece el nivel de aislamiento de las transacciones en la conexión de la base de datos.
in_transaction: Determina si se encuentra actualmente en una transacción.
El primer método anterior puede devolver un objeto de cursor. El objeto de cursor es el objeto principal de la API de base de datos de Python. Este objeto se utiliza principalmente para ejecutar varias declaraciones SQL, incluidas DDL, DML, declaraciones de consulta de selección. etc. Utilice cursores para ejecutar diferentes declaraciones SQL para devolver datos diferentes.
Los objetos cursor suelen tener los siguientes métodos y propiedades:
ejecutar(sql[, parámetros]): ejecuta sentencias SQL. El parámetro de parámetros se utiliza para especificar valores para los parámetros en la declaración SQL.
executemany(sql, seq_of_parameters): ejecuta repetidamente sentencias SQL. Puede especificar valores para los parámetros en la instrucción SQL a través de la secuencia seq_of_parameters, cuántos elementos tiene la secuencia y cuántas veces se ejecuta la instrucción SQL.
executescript(sql_script): Este no es un método estándar en DB API 2.0. Este método puede ejecutar directamente scripts SQL que contengan múltiples declaraciones SQL.
fetchone(): obtiene la siguiente fila del conjunto de resultados de la consulta. Si no hay ninguna fila siguiente, se devuelve Ninguno.
fetchmany(size=cursor.arraysize): devuelve una lista de las siguientes N filas del conjunto de resultados de la consulta. Si no hay más filas de datos, se devuelve una lista vacía.
fetchall(): devuelve una lista de todas las filas del conjunto de resultados de la consulta.
close(): Cierra el cursor.
rowcount: Esta propiedad de solo lectura devuelve el número de filas afectadas por la declaración SQL. Para el método ejecutarmany(), el número de registros modificados por este método también se puede obtener a través de este atributo.
lastrowid: esta propiedad de solo lectura obtiene el ID de fila de la última fila modificada.
arraysize: se utiliza para establecer u obtener el número de registros recuperados por fetchmany() de forma predeterminada. Esta propiedad tiene el valor predeterminado 1. Algunos módulos de bases de datos no tienen este atributo.
descripción: Esta propiedad de solo lectura obtiene información sobre todas las columnas devueltas por la última consulta.
conexión: Esta propiedad de solo lectura devuelve el objeto de conexión de la base de datos que creó el cursor. Algunos módulos de bases de datos no tienen este atributo.
Para resumir, DB API 2.0 de Python comienza con connect() e involucra dos API principales: conexión de base de datos y cursor. Su división del trabajo es la siguiente:
Conexión a base de datos: se utiliza para obtener cursores y controlar transacciones.
Cursor: ejecuta varias sentencias SQL.
Después de dominar las API anteriores, podrá resumir aproximadamente los pasos de programación de Python DB API 2.0.
El proceso básico de operar la base de datos
El proceso básico de operar la base de datos usando Python DB API 2.0 es el siguiente:
Llamar al método connect() para abrir la conexión de la base de datos y el método devuelve el objeto de conexión de la base de datos.
Abre el cursor a través del objeto de conexión de la base de datos.
Utilice cursores para ejecutar sentencias SQL (incluyendo DDL, DML, sentencias de consulta selectas, etc.). Si se ejecuta una declaración de consulta, se procesan los datos de la consulta.
Cierra el cursor.
Cierra la conexión a la base de datos.
La siguiente figura muestra el proceso básico de operación de la base de datos usando Python DB API 2.0.