mysqlmigratorpostgree 0.2.0
Libreria pensada para migrar datos a postgresql de manera versatil auto modulando simplificado el codigo
License: MIT
Requires Python: >=3.7

# 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:

```python
# Mapeo de tipos de datos
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"  # Tipo predeterminado si no hay un mapeo especÃ­fico
```

## 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:

```python
from mysqlmigratorpostgree import MysqlMigratorPostgree

# Instanciar el migrador
migrator = MysqlMigratorPostgree()

# Conectar a MySQL
migrator.connect_mysql(
    host="localhost",
    port=3306,  # Puerto predeterminado de MySQL
    user="root",
    password="password",  # Cambiar por tu contraseÃ±a
    database="databases_name"
)

# Conectar a PostgreSQL
migrator.connect_postgresql(
    host="localhost",
    port=5432,  # Puerto predeterminado de PostgreSQL
    user="postgres",
    password="password",  # Cambiar por tu contraseÃ±a
    database="databases_name"
)

# Migrar todas las tablas
migrator.migrate_all()

# Cerrar conexiones
migrator.close_connections()
```