código Python para leer y escribir bases de datos

Prefacio: En el pasado, usaba pymysql para leer la base de datos y operar cursores, lo que me parecía bastante inconveniente.

Los métodos de lectura y escritura que se presentan a continuación deben importar primero 3 paquetes, pandas, sqlalchemy, pymysql , pip install. Si tiene problemas para importar paquetes, consulte mi artículo sobre construcción del entorno básico de Python.

1. Utilice pd.read_sql() para leer datos

read_sql(sql,con,index_col='Ninguno',coerce_float='True',params='Ninguno',parse_dates='Ninguno',columns='Ninguno',chunksize:Ninguno='Ninguno')

El método read_sql se utiliza en pandas para ejecutar una consulta de instrucción SQL específica en la base de datos o consultar toda la tabla especificada y devolver los resultados de la consulta en el tipo DataFrame.

El significado de cada parámetro es el siguiente:

sql: la instrucción sql que debe ejecutarse con: el motor necesario para conectarse a la base de datos, creado con otros paquetes de conexión de bases de datos, como SQLalchemy y pymysql index_col: qué columna elegir
como índice coerce_float: convertir la cadena numérica en flotante
parse_dates: convierte una determinada columna Convierte una cadena de fecha en columnas de datos de fecha y hora: selecciona las columnas que deseas conservar
tamaño de fragmento: cuántas filas de datos se generan cada vez

Código de muestra:

import pandas as pd
import sqlalchemy

engine = sqlalchemy.create_engine('mysql+pymysql://root:******@192.168.0.***:3306/test')

sql='''
select * from weather_test where
create_time between '2020-09-21' and '2020-09-22'
and city in ('杭州','上海')
'''
df = pd.read_sql(sql,engine)
df

Por supuesto, el motor usa pymysql y llamará a pymysql. Debe estar en la biblioteca de Python. Si no, simplemente instálelo con pip.
El principal resultado devuelto por este método de lectura es un marco de datos, que facilita la manipulación posterior de los datos.

Si la versión de sqlalchemy es una versión superior (como 2.0.0), mi python3.9 local está instalado con 2.0.16 de forma predeterminada, debe usar el siguiente método de escritura y python3.6 (1.4.49) puede usar el método de escritura anterior.

from sqlalchemy import create_engine, text
df = pd.read_sql(text(sql), engine.connect())

2.to_sql() escritura por lotes

to_sql() es una función de pandas, utilizada para insertar datos en la base de datos en lotes, que contiene los siguientes parámetros

DataFrame.to_sql(nombre,con,flavour = Ninguno,esquema = Ninguno,
if_exists='fail',index = True,index_label = Ninguno,chunksize = Ninguno,dtype = Ninguno)

Los parámetros requeridos son:

nombre: el nombre de la tabla que necesita ser operada
con: el conector con la base de datos
if_exists: si la tabla ya existe en la base de datos, realice esas operaciones (1. falla: arroja un error e interrumpe la ejecución 2. reemplazar reemplaza el actual tabla 3. anexar: insertar datos en una tabla existente) El valor predeterminado es
índice de error: si se inserta la columna de índice del marco de datos en la tabla de la base de datos como una columna de datos. El valor predeterminado es verdadero
index_label: la etiqueta de la columna de índice , el valor predeterminado es Ninguno tamaño de fragmento: cada uno Cuántas filas de datos se insertarán a la vez, el valor predeterminado es Ninguno, todos los datos se escriben en lotes a la vez tipo d: formato de diccionario, la clave es el nombre del campo, el valor es el formato de datos
correspondiente al campo. Puede especificar el formato de datos de cada campo al insertar datos. El valor predeterminado es Ninguno

hay que tener en cuenta es:

El sitio web oficial de pandas explica que el conector utilizado por to_sql es preferiblemente el conector establecido por SQLAlchemy.
Antes de usar to_sql, debe asegurarse de que los nombres de las columnas del marco de datos sean iguales a los nombres de las columnas de la tabla que se importará.

Código de muestra:

import sqlalchemy 
import pandas as pd
conn =sqlalchemy.create_engine('mysql+pymysql://****:******@192.168.0.***:3306/test')
dataframe.to_sql('table_name',con=conn,index=False,if_exists='append')

Supongo que te gusta

Origin blog.csdn.net/keepandkeep/article/details/132259573
Recomendado
Clasificación