Trabajo con bases de datos en Swift: PostgreSQL y MongoDB para principiantes

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción: ¿Por qué Swift y bases de datos?

\n

Swift no es solo un lenguaje para crear aplicaciones móviles. Gracias a los frameworks Vapor y SwiftNIO, los desarrolladores pueden crear aplicaciones de servidor completas que interactúan con bases de datos relacionales y orientadas a documentos. En este artículo, analizaremos cómo conectarse a PostgreSQL y MongoDB desde Swift, y mostraremos ejemplos de código simples para principiantes.

\n

El artículo está dirigido a quienes ya conocen los fundamentos de Swift, pero recién comienzan a aprender a trabajar con bases de datos. Cubriremos dos enfoques populares: SQL clásico (PostgreSQL) y NoSQL flexible (MongoDB).

\n\n

1. PostgreSQL en Swift: Datos estructurados

\n

PostgreSQL es una potente base de datos relacional de código abierto. Para trabajar con ella en Swift, usaremos el paquete PostgresKit, que forma parte del ecosistema Vapor.

\n\n

1.1 Instalación y configuración

\n

Agregue la dependencia en el archivo Package.swift:

\n
// swift-tools-version:5.7\nimport PackageDescription\n\nlet package = Package(\n    name: "MyApp",\n    dependencies: [\n        .package(url: "https://github.com/vapor/postgres-kit.git", from: "2.0.0")\n    ],\n    targets: [\n        .executableTarget(\n            name: "MyApp",\n            dependencies: [\n                .product(name: "PostgresKit", package: "postgres-kit")\n            ]\n        )\n    ]\n)
\n\n

1.2 Conexión a la base de datos

\n

Cree una instancia de configuración y conéctese al servidor PostgreSQL:

\n
import PostgresKit\n\nlet eventLoopGroup = MultiThreadedEventLoopGroup(numberOfThreads: 1)\ndefer { try! eventLoopGroup.syncShutdown() }\n\nlet configuration = PostgresConfiguration(\n    hostname: "localhost",\n    port: 5432,\n    username: "swift_user",\n    password: "secret",\n    database: "swift_db"\n)\n\nlet pool = EventLoopGroupConnectionPool(\n    source: PostgresConnectionSource(configuration: configuration),\n    on: eventLoopGroup\n)\ndefer { try! pool.syncShutdown() }\n\nlet connection = try pool.requestConnection().wait()\nprint("¡Conexión a PostgreSQL establecida!")
\n\n

1.3 Ejecución de consultas SQL

\n

Ahora ejecutemos una consulta simple para crear una tabla e insertar datos:

\n
// Creamos la tabla de usuarios\ntry connection.query("""\n    CREATE TABLE IF NOT EXISTS users (\n        id SERIAL PRIMARY KEY,\n        name TEXT NOT NULL,\n        email TEXT UNIQUE NOT NULL\n    )\n""").wait()\n\n// Insertamos datos\ntry connection.query("""\n    INSERT INTO users (name, email) \n    VALUES ('Alexei', 'alex@example.com')\n""").wait()\n\n// Leemos datos\nlet rows = try connection.query("SELECT * FROM users").wait()\nfor row in rows {\n    let id = try row.decode(Int.self, column: "id")\n    let name = try row.decode(String.self, column: "name")\n    let email = try row.decode(String.self, column: "email")\n    print("Usuario: \\(name) (\\(email)), ID: \\(id)")\n}
\n\n

2. MongoDB en Swift: Documentos flexibles

\n

MongoDB es una base de datos NoSQL que almacena datos en formato de documentos similares a JSON. Para Swift existen varios controladores, pero usaremos el oficial MongoDB Swift Driver.

\n\n

2.1 Instalación del controlador

\n

Agregue el paquete en Package.swift:

\n
dependencies: [\n    .package(url: "https://github.com/mongodb/mongo-swift-driver.git", from: "1.0.0")\n],\ntargets: [\n    .executableTarget(\n        name: "MyApp",\n        dependencies: [\n            .product(name: "MongoSwift", package: "mongo-swift-driver")\n        ]\n    )\n]
\n\n

2.2 Conexión a MongoDB

\n

Cree un cliente y seleccione una base de datos:

\n
import MongoSwift\n\nlet client = try MongoClient("mongodb://localhost:27017")\ndefer { try? client.syncClose() }\n\nlet database = client.db("swift_m                

Blogs

Book Recommendations