Arbeit mit Datenbanken in Swift: PostgreSQL und MongoDB

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

Einführung in die Arbeit mit Datenbanken in Swift

Swift ist längst nicht mehr nur eine Sprache für die mobile Entwicklung. Mit dem Aufkommen von Server-Frameworks wie Vapor und Kitura ist Swift zu einem vollwertigen Werkzeug für die Erstellung von Backend-Lösungen geworden. Ein zentraler Aspekt jedes Serversystems ist die Arbeit mit Datenbanken. In diesem Artikel betrachten wir, wie man sich mit zwei populären DBMS verbindet und interagiert: der relationalen PostgreSQL und der dokumentenorientierten MongoDB. Sie erfahren, welche Bibliotheken verwendet werden, wie man die Verbindung einrichtet und grundlegende CRUD-Operationen in reinem Swift durchführt.



PostgreSQL in Swift: Einrichtung und grundlegende Operationen

PostgreSQL ist eine der zuverlässigsten relationalen Datenbanken. Für die Arbeit mit ihr in Swift gibt es mehrere Bibliotheken, aber die beliebteste ist PostgresNIO – ein asynchroner Treiber, der auf SwiftNIO basiert. Wenn Sie das Vapor-Framework verwenden, wird die Arbeit mit PostgreSQL durch das ORM Fluent vereinfacht.



Verbindung zu PostgreSQL über PostgresNIO

Beginnen wir mit der Installation der Abhängigkeit. Fügen Sie in Package.swift hinzu:

// swift-tools-version:5.7import PackageDescription

let package = Package( name: "MyApp", dependencies: [ .package(url: "https://github.com/vapor/postgres-nio.git", from: "1.18.0") ], targets: [ .target(name: "MyApp", dependencies: [ .product(name: "PostgresNIO", package: "postgres-nio") ]) ])


Beispiel für eine Verbindung und die Ausführung einer einfachen SELECT-Abfrage:

import PostgresNIOimport NIOCoreimport NIOPosix

let eventLoopGroup = MultiThreadedEventLoopGroup(numberOfThreads: 1)

let config = PostgresConnection.Configuration( host: "localhost", port: 5432, username: "myuser", password: "mypassword", database: "mydb", tls: .disable)

let connection = try await PostgresConnection.connect( on: eventLoopGroup.next(), configuration: config)

let rows = try await connection.query("SELECT id, name FROM users LIMIT 5;", logger: nil)

for try await row in rows { let id: Int = try row["id"].decode(Int.self) let name: String = try row["name"].decode(String.self) print("User: \\(id) - \\(name)")}


Arbeit mit Vapor Fluent (ORM)

Fluent bietet eine hochwertige API für die Arbeit mit PostgreSQL. Ein Benutzermodell würde wie folgt aussehen:

import Fluentimport Vapor

final class User: Model, Content { static let schema = "users"

@ID(key: .id) var id: UUID?

@Field(key: "name") var name: String

@Field(key: "email") var email: String

init() { }

init(id: UUID? = nil, name: String, email: String) { self.id = id self.name = name self.email = email }}

// Erstellen eines Datensatzeslet user = User(name: "Ivan", email: "ivan@example.com")try await user.save(on: req.db)

// Abfrage aller Benutzerlet users = try await User.query(on: req.db).all()


MongoDB in Swift: Arbeit mit Dokumenten

MongoDB ist eine NoSQL-Datenbank, die Daten im BSON-Format (Binary JSON) speichert. Für Swift gibt es den offiziellen Treiber MongoSwift, der von MongoDB Inc. entwickelt wurde. Er unterstützt asynchrone Operationen sowie den synchronen Modus.



Installation und Verbindung von MongoSwift

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

dependencies: [    .package(url: "https://github.com/mongodb/mongo-swift-driver.git", from: "1.3.0")],targets: [    .target(name: "MyApp", dependencies: [        .product(name: "MongoSwift", package: "mongo-swift-driver")    ])]


Beispiel für die Verbindung zu einer lokalen MongoDB und das Einfügen eines Dokuments:

import MongoSwift

let client = try MongoClient("mongodb://localhost:27017")let db = client.db("mydatabase")let collection = db.collection("u

Blogs

Buchempfehlungen