Rust Postgres实例

Rust Postgres介绍

Rust Postgres是一个纯Rust实现的PostgreSQL客户端库,无需依赖任何外部二进制文件2。这意味着它可以轻松集成到你的Rust项目中,提供对PostgreSQL的支持。

特点

  • 高性能:Rust Postgres提供了高性能的数据库交互功能,这对于需要处理大量数据的应用来说是非常重要的。
  • 安全性:由于Rust本身的设计就注重安全性,因此Rust Postgres也继承了这一特性,能够在编译期间检测并预防大部分潜在的安全问题。
  • 易用性:Rust Postgres的API设计简洁明了,易于理解和使用,这使得开发者能够快速上手并开始使用。

目录结构

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

假设已有数据库library,初始数据库,可在官方下载软件,按照过程设置密码,本实例中是123456。
postgreSQL不允许管理员登录命令行,可以在路径.\PostgreSQL\16\pgAdmin 4\runtime找到pgAdmin4.exe打开可视化界面。

PostgreSQL: Windows installers

执行文件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(())
}

命令行执行指令
 

cargo run --example createPostgresDatabase

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/681787.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从心理学角度看,GPT 对人有什么影响?

开启个性化AI体验&#xff1a;深入了解GPT的无限可能 导言 GPT 与我们日常生活的融合标志着技术进步的重大飞跃&#xff0c;为提高效率和创新提供了前所未有的机遇。然而&#xff0c;当我们与这些智能系统日益紧密地交织在一起时&#xff0c;探索它们对个人产生的细微的心理影响…

案例研究|硬之城借助DataEase以数据驱动供应链精细化管理

深圳硬之城信息技术有限公司&#xff08;以下简称为“硬之城”&#xff09;成立于2015年&#xff0c;专注电子元件供应链领域&#xff0c;定位于电子产业供应链与智造平台。硬之城通过名为“Allchips”的集成式服务平台&#xff0c;为客户提供一站式的电子元件采购和供应链管理…

SRC上分秘诀+实战挖掘+挖洞技巧+新手上路+详细讲解

SRC马上到来 可能有些好兄弟们还没有头绪 只会做一些靶场 并没有什么实战经验 所以这篇文章给大家分享一下我挖洞2个月的经验分享 适合新手上路 如何找站&#xff1f; 谷歌搜索 谷歌搜索 谷歌搜索 SQL注入XSS所有漏洞 inurl:.php?idxx 公司inurl:.asp?idxx 公司inurl:.jsp?…

Springboot项目使用redis实现session共享

1.安装redis&#xff0c;并配置密码 这里就不针对于redis的安装约配置进行说明了&#xff0c;直接在项目中使用。 2.pom.xml文件中引入需要的maven <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version&g…

2024付钱入群系统软件,源代码构建,变现教程

自从我开始做资源网站新项目并恢复盈利后&#xff0c;我对用户类项目越来越感兴趣。很多网址类项目需要一定的技术门槛&#xff0c;这可以筛选掉一部分人&#xff0c;因此竞争相对较小。许多新人在从事项目时只关注小视频&#xff0c;而忽视了网址类项目的潜力。 这个付费入群…

吴恩达机器学习笔记:第 9 周-16推荐系统(Recommender Systems) 16.3-16.4

目录 第 9 周 16、 推荐系统(Recommender Systems)16.3 协同过滤16.4 协同过滤算法 第 9 周 16、 推荐系统(Recommender Systems) 16.3 协同过滤 在之前的基于内容的推荐系统中&#xff0c;对于每一部电影&#xff0c;我们都掌握了可用的特征&#xff0c;使用这些特征训练出了…

力扣每日一题113:路径总和||

题目 中等 给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSu…

冒泡排序----深刻理解版本

前面虽然向大家介绍了冒泡排序&#xff0c;但是表达的不是很清楚&#xff0c;这次我带着更深刻的理解向大家介绍以下冒泡排序。 1.冒泡排序 冒泡排序其实是一种排序算法&#xff0c;通过数据之间的相互比较将一堆混乱的数据按照升序或者降序的顺序排列。 2.解题思路 解题思…

Linux系统运维:修改docker容器与宿主机之间的端口映射,解决端口占用问题

目录 一、问题 二、docker端口映射 &#xff08;一&#xff09;docker端口映射定义 1、相关概念&#xff1a; 2、默认情况下&#xff0c;Docker容器会有一个端口映射&#xff1a; 3、端口范围&#xff1a; &#xff08;二&#xff09;配置相关 1、指定端口映射 2、随机…

【ArcGIS 脚本工具】格式化简单渲染图层或图层组

CAD加GIS是规划人的黄金搭档&#xff0c;不可偏废。 小编通常直接在ArcPro中加载CAD查看&#xff0c;这样可以保证CAD修改之后GIS能同步更新显示。 但是CAD在ArcPro中的显示多少有点水土不服。 比如湘源地块在ArcPro3.0中显示时会自动加上透明度&#xff0c;虽然这样可以看到…

LLM分布式训练---混合并行(2D 3D)

近年来&#xff0c;随着Transformer、MOE架构的提出&#xff0c;使得深度学习模型轻松突破上万亿规模参数&#xff0c;传统的单机单卡模式已经无法满足超大模型进行训练的要求。因此&#xff0c;我们需要基于单机多卡、甚至是多机多卡进行分布式大模型的训练。 而利用AI集群&a…

硬件知识积累 音频插座的了解,看音频插座的原理图来了解音频插座的引脚。

1. 音频接口 音频插座是一种用于连接音频信号线路的电子元件&#xff0c;常见于音频设备&#xff08;如音响、耳机、话筒等&#xff09;中。它的主要作用是将电子信号转化为声音信号&#xff0c;以满足人们对于音乐、电影、游戏等方面的需求。 根据插头形状的不同&#xff0c;音…