千家信息网

Rust怎么连接PostgreSQL数据库

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要讲解了"Rust怎么连接PostgreSQL数据库",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Rust怎么连接PostgreSQL数据库
千家信息网最后更新 2026年11月02日Rust怎么连接PostgreSQL数据库

这篇文章主要讲解了"Rust怎么连接PostgreSQL数据库",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Rust怎么连接PostgreSQL数据库"吧!

pgxr 是一个 Rust 的 crate 库,可以实现用 Rust 语言来编写 PostgreSQL 的扩展函数(相当于存储过程)。

这次,我们使用 postgres 这个 crate 来连接和操作 PostgreSQL 数据库。

创建好项目后,在 cargo.toml 里添加 postgres 的依赖:

首先,导入相关的类型,并创建一个 Person struct:

再创建 create_db 函数,用来创建数据库和表,它返回一个 Result,里面可能是 Client 或错误:

注意,Client::connect() 函数所接受的连接字符串可以是两种形式的:

Key-Value 形式。例如:Client::connect("host=localhost user=postgres", NoTls)?; 具体的 key 需要查阅官方文档。URL 形式。本例中使用的是 URL 形式。

一个相对完整的数据库连接字符串 URL 格式是:

postgres://username[:password]@host[:port][/database],其中 password、port、database 都是可选的。所以上面代码中做了相应的判断处理。

Client::connect() 函数的第二个参数用的是 NoTls,为了简单起见,这里我们不使用 TLS。

第 30、32 行,使用 Client 的 execute 方法先删除数据表(如果存在的话),然后再创建 person 表。

最后返回 Client。

接下来,创建 insert_data 函数,来插入一些数据:

注意该函数的参数 Client 必须是 mut 的。

再创建一个查询数据的函数:

这里,我们直接对 Client 的 query 方法返回的结果进行遍历,最后方法返回一个 Vec。

最后,在 main 函数里依次调用这些函数,并把查询结果打印出来:

结果如下:

全部代码如下:

use postgres::{error::Error, Client, NoTls}; #[derive(Debug)]struct Person {    id: i32,    name: String,    data: Option>,}fn create_db() -> Result {    let username = "postgres";    let password = "postgres";    let host = "localhost";    let port = "5432";    let database = "rust2021";    let conn_str = &format!(        "postgres://{}{}{}@{}{}{}{}{}",        username,        if password.is_empty() { "" } else { ":" },        password,        host,        if port.is_empty() { "" } else { ":" },        port,        if database.is_empty() { "" } else { "/" },        database    );    let mut client = Client::connect(conn_str, NoTls)?;    let _ = client.execute("DROP TABLE person", &[]);    client.execute(        "CREATE TABLE person (        id      SERIAL PRIMARY KEY,        name    TEXT NOT NULL,        data    BYTEA    )",        &[],    )?;    Ok(client)fn insert_data(client: &mut Client) -> Result<(), Error> {    let p1 = Person {        id: 1,        name: "Dave".to_string(),        data: None,    };    let p2 = Person {        id: 2,        name: "Nick".to_string(),        "INSERT INTO person (id, name, data)    VALUES ($1, $2, $3),    ($4, $5, $6)",        &[&p1.id, &p1.name, &p1.data, &p2.id, &p2.name, &p2.data],    Ok(())fn get_data(client: &mut Client) -> Result, Error> {    let mut persons = Vec::new();    for row in client.query("SELECT id, name, data FROM person", &[])? {        persons.push(Person {            id: row.get(0),            name: row.get(1),            data: row.get(2),        });    }    Ok(persons)fn main() -> Result<(), Error> {    let mut client = create_db()?;    insert_data(&mut client)?;    let persons = get_data(&mut client)?;    for p in persons {        println!("Person: {:?}", p);

感谢各位的阅读,以上就是"Rust怎么连接PostgreSQL数据库"的内容了,经过本文的学习后,相信大家对Rust怎么连接PostgreSQL数据库这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

数据 函数 数据库 形式 方法 结果 学习 代码 内容 参数 字符 字符串 查询 接下来 官方 就是 思路 情况 数据表 文档 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司排名 互联网是第几次科技革命的成果 科技和互联网公司 碳银互联网科技 卓越科技(互联网 ) 成都互联网科技公司 北京禾田雨橡互联网科技 互联网科技宣传片 科技类的互联网平台 美国互联网前沿科技 科技互联网大厂 互联网软件和科技 速维有品互联网信息科技(苏州)有限公司 消费医药和互联网科技 如何创新互联网科技 互联网科技创新的路径 中科明德北京互联网科技 电子商务与互联网科技的关系 福建互联网展示科技馆设计 小牛互联网科技有限公司地址 互联网是第几次科技革命的成果 重庆互联网络科技 互联网科技公司怎么样 盛创互联网科技有限公司 深圳市运趣互联网科技有限公司 中科明德北京互联网科技 上海京穆互联网科技有限公司 四川互联网展示科技馆设计 宇信科技在杭州互联网排第几 平安好医生打造互联网科技医疗
0