Travailler avec les bases de données en Swift : PostgreSQL et MongoDB en pratique

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : Pourquoi un développeur Swift a-t-il besoin de bases de données ?

Lors du développement d'applications natives pour iOS et macOS, il est souvent nécessaire de stocker des données non seulement localement (Core Data, UserDefaults), mais aussi sur un serveur distant. Cela peut être de l'analyse côté serveur, de la journalisation, de la synchronisation entre appareils ou un backend complet pour l'application. Les deux types de bases de données les plus populaires sont les bases relationnelles (PostgreSQL) et les bases orientées documents (MongoDB).

Dans cet article, nous allons voir comment se connecter à PostgreSQL et MongoDB depuis une application Swift, en utilisant des bibliothèques et pilotes populaires. Nous accorderons une attention particulière à la pratique : installation des dépendances, écriture de requêtes et gestion des erreurs.



1. Travailler avec PostgreSQL depuis Swift

PostgreSQL est un SGBD relationnel puissant, idéal pour les projets où l'intégrité des données et les requêtes SQL complexes sont importantes. En Swift, nous pouvons travailler avec PostgreSQL de deux manières principales :

  • Avec l'ORM Fluent (partie du framework Vapor) — une approche de haut niveau, pratique pour les applications web.
  • Directement via un pilote (par exemple, PostgresNIO) — un contrôle de bas niveau, adapté aux applications iOS/macOS.

Examinons la deuxième option, car elle ne nécessite pas Vapor et convient aux applications classiques.



1.1. Connexion à PostgreSQL via PostgresNIO

Ajoutez la dépendance dans Package.swift :

dependencies: [    .package(url: "https://github.com/vapor/postgres-nio.git", from: "1.18.0")]

Exemple de connexion et d'exécution d'une requête :

import PostgresNIOimport NIOCoreimport NIOPosix

func queryPostgres() async throws { let eventLoopGroup = MultiThreadedEventLoopGroup(numberOfThreads: 1) defer { try? eventLoopGroup.syncShutdownGracefully() }

let config = PostgresConnection.Configuration( host: "localhost", port: 5432, username: "swift_user", password: "secret", database: "test_db", tls: .disable )

let connection = try await PostgresConnection.connect( on: eventLoopGroup.next(), configuration: config ) defer { try? connection.close() }

let rows = try await connection.query("SELECT id, name FROM users LIMIT 5;", logger: nil) for try await row in rows { let id = try row.decode(Int.self, column: "id") let name = try row.decode(String.self, column: "name") print("ID: \\(id), Name: \\(name)") }}

Ce code établit une connexion au serveur PostgreSQL local, exécute un SELECT et affiche les résultats. Important : ne stockez jamais les mots de passe dans le code — utilisez des variables d'environnement ou le Keychain.



1.2. Insertion de données avec paramètres

Pour vous protéger contre les injections SQL, utilisez des requêtes paramétrées :

let name = "Alice"let age = 30try await connection.query(    "INSERT INTO users (name, age) VALUES ($1, $2);",    params: [.string(name), .int(age)],    logger: nil)


2. Travailler avec MongoDB depuis Swift

MongoDB est une base de données NoSQL qui stocke les données sous forme de documents de type JSON (BSON). Pour Swift, il existe un excellent pilote MongoSwift.



2.1. Installation de MongoSwift

Ajoutez dans Package.swift :

dependencies: [    .package(url: "https://github.com/mongodb/mongo-swift-driver.git", from: "1.3.0")]


2.2. Connexion et opérations CRUD

Exemple de connexion à MongoDB local et d'insertion d'un document :

import MongoSwift

func mongoExample() async throws { let client = try MongoClient("mongodb://localhost:27017") defer { try? client.syncClose() }

let db = client.db("test_database") let collection = db.collection("users")

// Insertion d'un document let document: Document = ["name": "Bob", "age": 25, "city": "Mosc

Blogs

Book Recommendations