24个版本

使用旧的Rust 2015

0.6.1 2024年6月11日
0.5.0 2024年1月19日
0.4.8 2023年4月18日
0.4.7 2022年7月18日
0.2.0 2015年11月21日

数据库接口中排名29

Download history 57230/week @ 2024-05-03 64600/week @ 2024-05-10 63474/week @ 2024-05-17 57781/week @ 2024-05-24 63169/week @ 2024-05-31 64061/week @ 2024-06-07 61871/week @ 2024-06-14 61463/week @ 2024-06-21 55995/week @ 2024-06-28 60251/week @ 2024-07-05 60313/week @ 2024-07-12 63739/week @ 2024-07-19 65213/week @ 2024-07-26 62259/week @ 2024-08-02 63102/week @ 2024-08-09 62539/week @ 2024-08-16

每月下载量265,409
用于252个crate(3个直接使用)

MIT/Apache

680KB
16K SLoC

C 9K SLoC // 0.3% comments Rust 7K SLoC // 0.0% comments Perl 331 SLoC // 0.2% comments

pq-sys

libpq的自动生成的Rust绑定 https://docs.rs/pq-sys/latest/pq_sys/

构建

此存储库包含与 libpq-fe.hpostgres_ext.h 中提供的C函数的直接、一对一映射。此库期望系统上已安装libpq。

crate的构建脚本将尝试使用以下方法找到libpq的路径

  • 首先,它将查找格式为 PQ_LIB_DIR_{TARGET} 的环境变量,其中 {TARGET} 将被为交叉编译设置的Target环境变量替换
  • 其次,如果设置了环境变量 PQ_LIB_DIR,则将使用其值
  • 如果未设置环境变量,则尝试使用pkg-config查找它。所有配置选项,如 PKG_CONFIG_ALLOW_CROSSPKG_CONFIG_ALL_STATIC 等,均适用于 pkg-config crate。
  • 然后,对于MSVC ABI构建,如果可用,构建脚本将尝试使用来自 vcpkg 安装程序的库。您可能需要设置VCPKG_ROOT(或运行 vcpkg integrate install),设置VCPKGRS_DYNAMIC=1,并运行 vcpkg install libpq:x64-windows。有关更多信息,请参阅vcpkg crate的文档。
  • 如果仍然无法找到库,则将调用Postgres命令 pg_config --libdir

构建脚本指示Cargo在设置环境变量PQ_LIB_STATIC时将库静态链接。如果目标是musl,这可能会很有用。如果使用pkg-config,它的配置选项将生效。

特性

  • buildtime_bindgen:在构建时运行bindgen以使用已安装的头部生成绑定。与bundled特性不兼容。
  • bundled:从源代码构建libpq捆绑版本。要使用捆绑的openssl版本,将带有vendored特性的openssl-sys crate添加到您的crate依赖项中
    [dependencies]
    openssl-sys = { version = "0.9.93", features = ["vendored"] }
    

常见问题解答

我在macOS上看到dyld: 符号未找到 __cg_jpeg_resync_to_restart

这是由于pg_config - -libdir的输出是一个包含与系统libjpeg不同的libjpeg.dylib的目录。这通常是由于通过homebrew安装PostgreSQL或使用postgresapp.com造成的。

如果您通过homebrew安装,除非您提供了features = ["pkg-config"],否则您应该看不到这个问题。您可以通过导出PQ_LIB_DIR="$(brew --prefix postgres)/lib"来解决这个问题。

如果您使用postgresapp.com安装PostgreSQL,您将无法使用cargo runcargo test运行您的二进制文件。您可以通过cargo build手动编译二进制文件,然后运行/target/debug/yourapp。您还可以手动创建一个只包含对libpq.dylib的符号链接的目录,然后导出PQ_LIB_DIR到该目录。建议您不要使用postgresapp.com。

许可

根据您的选择,许可如下

贡献

除非您明确声明,否则您有意提交给作品以供包含的贡献,根据Apache-2.0许可证定义,应以上述双重许可,没有其他条款或条件。

依赖关系