MysqlMigratorPostgree
Introducción
pip install mysqlmigratorpostgreesql
MysqlMigratorPostgree es una librerÃa en Python diseñada para facilitar la migración de bases de datos completas desde MySQL hacia PostgreSQL. Esta herramienta es ideal para ingenieros de software que buscan una solución automatizada para transferir datos y estructuras de tablas entre estos dos sistemas de gestión de bases de datos relacionales.
La librerÃa ofrece:
- Conexión sencilla a servidores de MySQL y PostgreSQL.
- Migración automatizada de tablas, incluyendo columnas y tipos de datos.
- Manejo eficiente de conexiones y errores.
- Un diseño modular y extensible.
Diccionario de Palabras Reservadas
Durante la migración, ciertos tipos de datos en MySQL no tienen un equivalente exacto en PostgreSQL. Este es un resumen de las conversiones realizadas por la librerÃa:
Tipo en MySQL | Tipo en PostgreSQL | Descripción |
---|
INT | INTEGER | Enteros de tamaño fijo. |
VARCHAR(n) | TEXT | PostgreSQL no requiere lÃmites estrictos para textos. |
TEXT | TEXT | Se mantiene el mismo tipo para textos largos. |
FLOAT | REAL | Valores de punto flotante. |
DOUBLE | DOUBLE PRECISION | Valores de mayor precisión en PostgreSQL. |
DATE | DATE | Fecha estándar en formato YYYY-MM-DD . |
DATETIME | TIMESTAMP | Fecha y hora con zona horaria. |
TINYINT(1) | BOOLEAN | Interpretado como un valor lógico (TRUE o FALSE ). |
ENUM | TEXT | Convertido a texto, ya que PostgreSQL no soporta directamente el tipo ENUM . |
Detalles del Código
Estructura General
La librerÃa sigue un enfoque modular. Cada funcionalidad está definida en un archivo especÃfico:
connect_mysql.py
: Maneja la conexión a un servidor MySQL.connect_postgresql.py
: Maneja la conexión a un servidor PostgreSQL.migrator.py
: Orquesta la migración de tablas y datos.
Cambios en los Tipos de Datos
La lógica para convertir tipos de datos de MySQL a PostgreSQL se encuentra en el archivo migrator.py
. Aquà está el fragmento clave del código con explicación:
if "int" in column_type:
postgres_type = "INTEGER"
elif "varchar" in column_type or "text" in column_type:
postgres_type = "TEXT"
elif "float" in column_type or "double" in column_type:
postgres_type = "REAL"
elif "date" in column_type:
postgres_type = "DATE"
elif "tinyint(1)" in column_type:
postgres_type = "BOOLEAN"
else:
postgres_type = "TEXT"
Código de Ejemplo
Aquà tienes un ejemplo funcional que muestra cómo usar la librerÃa para migrar todas las tablas de una base de datos MySQL a PostgreSQL:
from mysqlmigratorpostgree import MysqlMigratorPostgree
migrator = MysqlMigratorPostgree()
migrator.connect_mysql(
host="localhost",
port=3306,
user="root",
password="password",
database="databases_name"
)
migrator.connect_postgresql(
host="localhost",
port=5432,
user="postgres",
password="password",
database="databases_name"
)
migrator.migrate_all()
migrator.close_connections()