亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Rust?Postgres實例代碼

 更新時間:2024年05月07日 08:29:11   作者:凝霜月冷殘-草木破白衣  
Rust Postgres是一個純Rust實現(xiàn)的PostgreSQL客戶端庫,本文主要介紹了Rust?Postgres實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

Rust Postgres是一個純Rust實現(xiàn)的PostgreSQL客戶端庫,無需依賴任何外部二進制文件。這意味著它可以輕松集成到你的Rust項目中,提供對PostgreSQL的支持。

特點

  • 高性能:Rust Postgres提供了高性能的數(shù)據(jù)庫交互功能,這對于需要處理大量數(shù)據(jù)的應(yīng)用來說是非常重要的。
  • 安全性:由于Rust本身的設(shè)計就注重安全性,因此Rust Postgres也繼承了這一特性,能夠在編譯期間檢測并預(yù)防大部分潛在的安全問題。
  • 易用性:Rust Postgres的API設(shè)計簡潔明了,易于理解和使用,這使得開發(fā)者能夠快速上手并開始使用。

目錄結(jié)構(gòu)

cargo.toml配置文件

[package]
name = "MyPostgres"
version = "0.1.0"
edition = "2021"

[dependencies]
postgres = "0.19.7"

[[example]]
name = "createPostgresDatabase"
path = "examples/SQL/createPostgresDatabase.rs"
doc-scrape-examples = true

[package.metadata.example.createPostgresDatabase]
name = "Create Postgres Database"
description = "demonstrates postgreSQL database create"
category = "SQL Rendering"
wasm = true

假設(shè)已有數(shù)據(jù)庫library,初始數(shù)據(jù)庫,可在官方下載軟件,按照過程設(shè)置密碼,本實例中是123456。
postgreSQL不允許管理員登錄命令行,可以在路徑.\PostgreSQL\16\pgAdmin 4\runtime找到pgAdmin4.exe打開可視化界面。

PostgreSQL: Windows installers

執(zhí)行文件createPostgresDatabase.rs
增刪改查

use postgres::{Client, NoTls, Error};
use std::collections::HashMap;
use std::rc::Rc;
use std::cell::RefCell;
struct Author {
    _id: i32,
    name: String,
    country: String
}

struct Nation {
    nationality: String,
    count: i64,
}
fn establish_client() -> Client {

    Client::connect
        ("postgresql://postgres:123456@localhost/library", NoTls).expect("REASON")

}
fn main() -> Result<(), Error> {
    // let mut client =
    //     Client::connect("postgresql://postgres:123456@localhost/library", NoTls)?;

    let  client =Rc::new(RefCell::new(establish_client()));

    client.clone().borrow_mut().batch_execute("
        CREATE TABLE IF NOT EXISTS author (
            id              SERIAL PRIMARY KEY,
            name            VARCHAR NOT NULL,
            country         VARCHAR NOT NULL
            )
    ")?;

    client.clone().borrow_mut().batch_execute("
        CREATE TABLE IF NOT EXISTS book  (
            id              SERIAL PRIMARY KEY,
            title           VARCHAR NOT NULL,
            author_id       INTEGER NOT NULL REFERENCES author
            )
    ")?;


    let mut authors = HashMap::new();
    authors.insert(String::from("Chinua Achebe"), "Nigeria");
    authors.insert(String::from("Rabindranath Tagore"), "India");
    authors.insert(String::from("Anita Nair"), "India");

    for (key, value) in &authors {
        let author = Author {
            _id: 0,
            name: key.to_string(),
            country: value.to_string()
        };

        client.clone().borrow_mut().execute(
            "INSERT INTO author (name, country) VALUES ($1, $2)",
            &[&author.name, &author.country],
        )?;
    }

    for row in  client.clone().borrow_mut().query("SELECT id, name, country FROM author", &[])? {
        let author = Author {
            _id: row.get(0),
            name: row.get(1),
            country: row.get(2),
        };
        println!("Author {} is from {}", author.name, author.country);
    }

    client.clone().borrow_mut().execute("DROP TABLE book",&[]);
    // let result =
    //      client.clone().borrow_mut().execute
    //     ("DELETE FROM author WHERE id >= $1 AND id <= $2", &[&1i32, &100i32])?;
    //
    // println!("{:?}",result);
    let a2 = Author {
        _id: 0,
        name: "YinThunder".to_string(),
        country: "1".to_string()
    };
    let result =
        client.clone().borrow_mut().execute
        ("UPDATE  author SET name = $1 WHERE id >= $2 AND id <= $3", &[&a2.name,&1i32, &100i32])?;

    println!("{:?}",result);


    selectDataTable(client.clone());
    droptDataTable(client.clone());

    Ok(())

}
fn selectDataTable(client: Rc<RefCell<Client>>) ->Result<(), Error>{
    for row in client.borrow_mut().query("SELECT id, name, country FROM author", &[])? {
        let author = Author {
            _id: row.get(0),
            name: row.get(1),
            country: row.get(2),
        };
        println!("Author {} is from {}", author.name, author.country);
    }
    Ok(())
}
fn droptDataTable(client: Rc<RefCell<Client>>) ->Result<(), Error>{
    client.borrow_mut().execute("DROP TABLE author",&[]);
    Ok(())
}


命令行執(zhí)行指令

cargo run --example createPostgresDatabase

到此這篇關(guān)于Rust Postgres實例的文章就介紹到這了,更多相關(guān)Rust Postgres實例內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Rust中的Option枚舉快速入門教程

    Rust中的Option枚舉快速入門教程

    Rust中的Option枚舉用于表示可能不存在的值,提供了多種方法來處理這些值,避免了空指針異常,文章介紹了Option的定義、常見方法、使用場景以及注意事項,感興趣的朋友跟隨小編一起看看吧
    2025-01-01
  • 探索Rust切片與Go有何區(qū)別

    探索Rust切片與Go有何區(qū)別

    這篇文章主要為大家介紹了Rust切片與Go的區(qū)別探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Rust多線程Web服務(wù)器搭建過程

    Rust多線程Web服務(wù)器搭建過程

    這篇文章主要介紹了Rust多線程 Web 服務(wù)器搭建過程,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • Rust語言實現(xiàn)圖像編碼轉(zhuǎn)換

    Rust語言實現(xiàn)圖像編碼轉(zhuǎn)換

    image-rs庫是?Rust?社區(qū)中廣泛使用的一個開源庫,它提供了豐富的圖像編解碼功能,本文主要介紹了Rust語言實現(xiàn)圖像編碼轉(zhuǎn)換,具有一定的參考價值,感興趣的可以了解一下
    2024-05-05
  • Rust 中的文件操作示例詳解

    Rust 中的文件操作示例詳解

    Rust 中的路徑操作是跨平臺的,std::path 模塊提供的了兩個用于描述路徑的類型,本文給大家介紹Rust 中的文件操作示例詳解,感興趣的朋友一起看看吧
    2021-11-11
  • Rust錯誤處理之`foo(...)?`的用法與錯誤類型轉(zhuǎn)換小結(jié)

    Rust錯誤處理之`foo(...)?`的用法與錯誤類型轉(zhuǎn)換小結(jié)

    foo(...)?語法糖為Rust的錯誤處理提供了極大的便利,通過結(jié)合map_err方法和From?trait的實現(xiàn),你可以輕松地處理不同類型的錯誤,并保持代碼的簡潔性和可讀性,這篇文章主要介紹了Rust錯誤處理:`foo(...)?`的用法與錯誤類型轉(zhuǎn)換,需要的朋友可以參考下
    2024-05-05
  • Rust控制流運算符match的用法詳解

    Rust控制流運算符match的用法詳解

    match 是Rust中一個極為強大的控制流運算符,用于模式匹配和控制流的選擇,它允許將一個值與一系列的模式相比較,根據(jù)匹配的模式執(zhí)行相應(yīng)代碼,本文給大家詳細介紹了Rust控制流運算符match的用法,需要的朋友可以參考下
    2024-01-01
  • Rust 標(biāo)準(zhǔn)庫的結(jié)構(gòu)及模塊路徑詳解

    Rust 標(biāo)準(zhǔn)庫的結(jié)構(gòu)及模塊路徑詳解

    在 Rust 中,標(biāo)準(zhǔn)庫提供了一組核心功能,以幫助開發(fā)者執(zhí)行常見的編程任務(wù),這個路徑樹可以作為參考,幫助你更好地理解 Rust 標(biāo)準(zhǔn)庫的結(jié)構(gòu)和模塊之間的關(guān)系,本文介紹 Rust 標(biāo)準(zhǔn)庫的結(jié)構(gòu),并提供相應(yīng)的 use 路徑,感興趣的朋友一起看看吧
    2024-05-05
  • Rust實現(xiàn)grep命令行工具的方法

    Rust實現(xiàn)grep命令行工具的方法

    這篇文章主要介紹了Rust實現(xiàn)grep命令行工具的方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 如何使用Rust的向量存儲值列表

    如何使用Rust的向量存儲值列表

    本文介紹了在Rust中使用向量存儲值列表的方法,包括創(chuàng)建、更新、讀取、遍歷、存儲多種類型以及內(nèi)存釋放等方面,向量是Rust中常用且強大的集合類型,熟練掌握其用法有助于編寫高效且安全的代碼
    2025-02-02

最新評論