在Swift中处理数据库:PostgreSQL和MongoDB入门指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

引言:为什么选择Swift和数据库?

\n

Swift不仅仅是一种用于创建移动应用程序的语言。得益于Vapor和SwiftNIO框架,开发者可以创建完整的服务器端应用程序,这些应用程序能够与关系型和文档型数据库进行交互。在本文中,我们将介绍如何从Swift连接到PostgreSQL和MongoDB,并为初学者展示简单的代码示例。

\n

本文面向那些已经熟悉Swift基础知识,但刚开始学习数据库操作的开发者。我们将介绍两种流行的方法:经典的SQL(PostgreSQL)和灵活的NoSQL(MongoDB)。

\n\n

1. Swift中的PostgreSQL:结构化数据

\n

PostgreSQL是一个强大的开源关系型数据库。为了在Swift中使用它,我们将使用属于Vapor生态系统的PostgresKit包。

\n\n

1.1 安装与配置

\n

在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 连接到数据库

\n

创建配置实例并连接到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("PostgreSQL连接已建立!")
\n\n

1.3 执行SQL查询

\n

现在执行一个简单的查询来创建表并插入数据:

\n
// 创建用户表\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// 插入数据\ntry connection.query("""\n    INSERT INTO users (name, email) \n    VALUES ('阿列克谢', 'alex@example.com')\n""").wait()\n\n// 读取数据\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("用户:\\(name) (\\(email)),ID:\\(id)")\n}
\n\n

2. Swift中的MongoDB:灵活的文档

\n

MongoDB是一种NoSQL数据库,它以类似JSON的文档格式存储数据。Swift有多个驱动程序,但我们将使用官方的MongoDB Swift Driver。

\n\n

2.1 安装驱动程序

\n

在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 连接到MongoDB

\n

创建客户端并选择数据库:

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

博客

书籍推荐