PostgresClientKit 提供了一个友好的 Swift API,用于操作 PostgreSQL 数据库。
不需要 libpq。 PostgresClientKit 使用 Swift 实现了 Postgres 网络协议,因此不需要 libpq
。
使用现代 Swift 的开发者友好 API。 例如,错误由 enum PostgresError: Error
的实例表示,并通过 throw
或返回 Result<Success, Error>
引发。
Postgres 和 Swift 类型之间的安全转换。 类型转换是显式且健壮的。转换错误会被标记出来,而不是被屏蔽。 PostgresClientKit 提供了额外的 Swift 类型用于日期和时间,以解决 Postgres 类型和 Foundation Date
之间的阻抗失配问题。
内存高效。 结果集中的行通过迭代器暴露,而不是数组。行从 Postgres 服务器延迟检索。
SSL/TLS 支持。 加密 PostgresClientKit 和 Postgres 服务器之间的连接。
精心设计。完整的 API 文档,广泛的测试套件,积极支持。
听起来不错?让我们看一个例子。
这是一个基本但完整的示例,展示了如何连接到 Postgres,执行 SQL SELECT
命令,并处理结果行。它使用了 Postgres 教程 中的 weather
表。
import PostgresClientKit
do {
var configuration = PostgresClientKit.ConnectionConfiguration()
configuration.host = "127.0.0.1"
configuration.database = "example"
configuration.user = "bob"
configuration.credential = .scramSHA256(password: "welcome1")
let connection = try PostgresClientKit.Connection(configuration: configuration)
defer { connection.close() }
let text = "SELECT city, temp_lo, temp_hi, prcp, date FROM weather WHERE city = $1;"
let statement = try connection.prepareStatement(text: text)
defer { statement.close() }
let cursor = try statement.execute(parameterValues: [ "San Francisco" ])
defer { cursor.close() }
for row in cursor {
let columns = try row.get().columns
let city = try columns[0].string()
let tempLo = try columns[1].int()
let tempHi = try columns[2].int()
let prcp = try columns[3].optionalDouble()
let date = try columns[4].date()
print("""
\(city) on \(date): low: \(tempLo), high: \(tempHi), \
precipitation: \(String(describing: prcp))
""")
}
} catch {
print(error) // better error handling goes here
}
输出
San Francisco on 1994-11-27: low: 46, high: 50, precipitation: Optional(0.25)
San Francisco on 1994-11-29: low: 43, high: 57, precipitation: Optional(0.0)
libssl-dev
(仅在 Linux 上需要)PostgresClientKit 兼容 Linux、macOS 和 iOS。 它已经在以下平台上进行了测试:
cd <path-to-clone>
swift package clean
swift build
设置用于测试的 Postgres 数据库。这是一个一次性过程。
然后
cd <path-to-clone>
swift package clean
swift build
swift test
在 Xcode 中
选择 File > Add Packages...
输入包 URL: https://github.com/codewinsdotcom/PostgresClientKit
设置包版本要求(请参阅 决定包要求)。 例如,选择 Up To Next Major Version
和 1.0.0
以选择 PostgresClientKit 的最新 1.x.x 版本。
点击 Add Package。
导入到您的源代码文件
import PostgresClientKit
在您的 Package.swift
文件中
dependencies
。例如dependencies: [
.package(url: "https://github.com/codewinsdotcom/PostgresClientKit", from: "1.0.0"),
],
targets
中引用 PostgresClientKit
产品。例如targets: [
.target(
name: "MyProject",
dependencies: ["PostgresClientKit"]),
]
导入到您的源代码文件
import PostgresClientKit
将 PostgresClientKit
添加到您的 Podfile
。例如
target 'MyApp' do
pod 'PostgresClientKit', '~> 1.0'
end
然后运行 pod install
。
导入到您的源代码文件
import PostgresClientKit
PostgresClientKit-CommandLine-Example:一个命令行应用程序示例
PostgresClientKit-iOS-Example:一个 iOS 应用程序示例
感谢您对 PostgresClientKit 做出贡献的兴趣。
该项目有一个行为准则。请参阅 CODE_OF_CONDUCT.md 获取详细信息。
请使用 issues 来
欢迎对 develop
分支进行 Pull Request。 对于非微不足道的贡献(例如,不仅仅是更正拼写、错别字或空格),请首先通过提出 issue 来讨论提议的更改。
PostgresClientKit 在 Apache 2.0 许可下获得许可。 有关详细信息,请参阅 LICENSE。
PostgresClientKit 使用 语义化版本 2.0.0。 有关可用版本,请参阅 此存储库上的标签。