¿Cómo opera la automatización de Python la base de datos de manera elegante?

La biblioteca de terceros de Python que se presentará hoy es muy poderosa, perfecta para operar varias bases de datos. El nombre es registros Hay poca información sobre esta biblioteca en Internet, pero es muy popular en la comunidad de código abierto. Si esto no disipa sus preocupaciones, déjeme decirle una cosa más: si programa en Python, debe haber oído hablar de las solicitudes, estas dos bibliotecas están escritas por el mismo autor.

¿Cómo opera la automatización de Python la base de datos de manera elegante?

 

1. Uso rápido

Pasos de uso:

1. Conéctese a la base de datos y devuelva el objeto de la base de datos db

2. el objeto db ejecuta la instrucción sql

# pip install records 安装
import records

# 获取数据库
db = records.Database('mysql+pymysql://root:@localhost:3306/dev01_git')
# 查询
rows = db.query('select * from lemon_user')

El formato para obtener la base de datos es un formato de URL estándar. Si no está utilizando una base de datos mysql, solo necesita cambiar el tipo de base de datos:

¿Cómo opera la automatización de Python la base de datos de manera elegante?

 

Dos, crea una mesa

# 连接数据库
db = records.Database('mysql+pymysql://root:@localhost:3306/dev01_git')

# 创建表
sql_create_table = """CREATE TABLE IF NOT EXISTS lemon_user (
    name varchar(20),
    age int
) DEFAULT CHARSET=utf8 ;"""

db.query(sql_create_table)

Tres, inserte una sola pieza de datos

Records admite el uso de: variable para definir variables y completa la transferencia de valor dinámico a través de la entrada de parámetros, lo cual es muy útil cuando necesita cargar datos dinámicamente:

user = {"name": "yuze5", "age": 20}
db.query('INSERT INTO lemon_user(name,age) values (:name, :age)', **user)

Cuatro, inserta varios datos

La instrucción sql es muy inconveniente cuando se realizan múltiples operaciones de datos, especialmente cuando el valor aún está cambiando. El método bulk_query proporcionado por los registros puede insertar y actualizar rápidamente varios datos:

users = [
    {"name":"yuze", "age": 13},
    {"name":"yuze2", "age": 15},
    {"name":"yuze3", "age": 16}
]
db.bulk_query('INSERT INTO lemon_user(name,age) values (:name, :age)', users)

Cinco, consulta de datos

Después de consultar los datos, puede obtener todos los registros mediante el método all (), que admite 3 tipos.

  • El valor predeterminado es el objeto RecordCollection encapsulado por sí mismo,
  • También se puede convertir en un formulario de diccionario a través del parámetro as_dict = True,
  • Se puede convertir en un formulario de diccionario ordenado por as_ordereddict = True
rows = db.query('SELECT * FROM lemon_user;')
# 得到所有数据
print(rows.all())
# 字典形式展示
print(rows.all(as_dict=True))
# 获取第一个
print(rows.first())
# 以字典形式获取第一个
print(rows.first(as_dict=True))
# 排序字典
print(rows.first(as_ordereddict=True))
# 查询唯一的一个
print(rows.one())

Seis, soporte de transacciones de base de datos conciso

Una transacción de base de datos es una operación de base de datos que se utiliza a menudo, y generalmente es para mantener la atomicidad y consistencia de los datos.

Por ejemplo, una operación de base de datos para transferir:

1. Lea el saldo de la cuenta Yuze 2. Reste la transferencia-400 del saldo de la cuenta Yuze 3. Lea el saldo de la cuenta Chaoge 4. Agregue la cuenta Chaoge (+400).

Debemos asegurarnos de que estos 4 pasos se ejecuten con éxito al mismo tiempo, o no al mismo tiempo. Si los primeros 2 pasos se han ejecutado con éxito, pero se produce un error en el paso 3 y no se puede ejecutar más tarde, habrá un problema: la cuenta Yuze se ha deducido, pero la cuenta Chaoge no ha agregado dinero.

Esta situación se puede evitar mediante transacciones de base de datos.

with db.transaction() as tx:
    user = {"name": "yuze9", "age": 20}
    tx.query('INSERT INTO lemon_user(name,age) values (:name, :age)', **user)
    # 下面是错误的 sql 语句,有错误,则上面的 sql 语句不会成功执行。
    tx.query('sof')

Siete, los datos se exportan como json

Una vez que se obtienen los datos de la base de datos, se requieren más operaciones, como guardarlos.

rows = db.query('SELECT * FROM lemon_user;')
json_rows = rows.export('yaml')
print(json_rows)

8. Exportar datos a un archivo de Excel

El más utilizado es que si necesita una variedad de informes, debe guardarlos en un archivo de Excel.

rows = db.query('SELECT * FROM lemon_user;')
with open('users.xlsx', 'wb') as f:
    f.write(rows.export('xlsx'))

Efecto de los datos exportados:

¿Cómo opera la automatización de Python la base de datos de manera elegante?

 

Nueve, resumen

  • registros admite una variedad de bases de datos diferentes;
  • El método de registros es muy simple y uniforme, a diferencia de pymysql, también necesita recordar la información subyacente, como el objeto cursor;
  • Implemente automáticamente el administrador de contexto, sin necesidad de prestar atención al estado del enlace;
  • Soporte: dialecto variable, transferencia dinámica de parámetros de forma segura, para evitar problemas de seguridad causados ​​por declaraciones sql irregulares;
  • Apoyar las transacciones de la base de datos y mantener la atomicidad y consistencia de los datos;
  • Exporte fácilmente a json, yaml, xls, xlsx, pandas, html y otros formatos de datos.
  • El código fuente es muy simple, debes entenderlo.

Recomiende un grupo de intercambio de aprendizaje sobre pruebas de software: 785128166, hay videos compartidos, orientación para entrevistas, materiales de prueba, mapas mentales y videos en el grupo. Todos son productos secos, puede descargarlos y verlos. Comparta principalmente base de prueba, prueba de interfaz, prueba de rendimiento, prueba automatizada, arquitectura TestOps, Jmeter, LoadRunner, Fiddler, MySql, Linux, optimización de currículum, habilidades para entrevistas y datos de video reales de proyectos de prueba a gran escala. Utilice cada minuto y cada segundo de su tiempo para aprender a superarse, y no utilice la "falta de tiempo" para ocultar su pereza mental. ¡Esfuérzate mientras eres joven y dale una explicación a tu futuro yo!

Número público: Programador Erhei, después de prestar atención, puede recibir una gran cantidad de materiales de aprendizaje de forma gratuita.

Las cosas buenas deben compartirse con amigos.
 

Supongo que te gusta

Origin blog.csdn.net/weixin_53519100/article/details/114597665
Recomendado
Clasificación