Arbeit mit Datenbanken in Swift: PostgreSQL und MongoDB für Anfänger

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Einleitung: Warum Swift und Datenbanken?

\n

Swift ist nicht nur eine Sprache für die Entwicklung mobiler Anwendungen. Dank der Frameworks Vapor und SwiftNIO können Entwickler vollwertige Serveranwendungen erstellen, die mit relationalen und dokumentenorientierten Datenbanken interagieren. In diesem Artikel werden wir untersuchen, wie man von Swift aus eine Verbindung zu PostgreSQL und MongoDB herstellt, und zeigen einfache Codebeispiele für Anfänger.

\n

Der Artikel richtet sich an diejenigen, die bereits mit den Grundlagen von Swift vertraut sind, aber gerade erst beginnen, sich mit der Arbeit mit Datenbanken vertraut zu machen. Wir werden zwei beliebte Ansätze betrachten: klassisches SQL (PostgreSQL) und flexibles NoSQL (MongoDB).

\n\n

1. PostgreSQL in Swift: Strukturierte Daten

\n

PostgreSQL ist eine leistungsstarke relationale Open-Source-Datenbank. Für die Arbeit damit in Swift verwenden wir das Paket PostgresKit, das zur Vapor-Ökosystem gehört.

\n\n

1.1 Installation und Konfiguration

\n

Fügen Sie die Abhängigkeit in die Datei Package.swift hinzu:

\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 Verbindung zur Datenbank herstellen

\n

Erstellen Sie eine Konfigurationsinstanz und stellen Sie eine Verbindung zum PostgreSQL-Server her:

\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("Verbindung zu PostgreSQL hergestellt!")
\n\n

1.3 Ausführen von SQL-Abfragen

\n

Jetzt führen wir eine einfache Abfrage zum Erstellen einer Tabelle und zum Einfügen von Daten durch:

\n
// Tabelle für Benutzer erstellen\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// Daten einfügen\ntry connection.query("""\n    INSERT INTO users (name, email) \n    VALUES ('Alexej', 'alex@example.com')\n""").wait()\n\n// Daten lesen\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("Benutzer: \\(name) (\\(email)), ID: \\(id)")\n}
\n\n

2. MongoDB in Swift: Flexible Dokumente

\n

MongoDB ist eine NoSQL-Datenbank, die Daten im Format JSON-ähnlicher Dokumente speichert. Für Swift gibt es mehrere Treiber, aber wir verwenden den offiziellen MongoDB Swift Driver.

\n\n

2.1 Installation des Treibers

\n

Fügen Sie das Paket in Package.swift hinzu:

\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 Verbindung zu MongoDB herstellen

\n

Erstellen Sie einen Client und wählen Sie eine Datenbank aus:

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

Blogs

Buchempfehlungen