本文介紹基於Rust串連並使用寬表引擎的方法。
前提條件
已開通MySQL協議相容功能。如何開通,請參見開通MySQL協議相容功能。
已將用戶端IP添加至白名單,具體操作請參見設定白名單。
操作步驟
安裝Rust。如何安裝,請參見Rust。
在
Cargo.toml
檔案中,添加以下依賴項。[dependencies] mysql="*"
mysql指定為
*
時預設會使用最新版本。配置串連參數。
let opts = OptsBuilder::new() .ip_or_hostname(Some("ld-uf6k8yqb741t3****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com")) .user(Some("user")) .pass(Some("test")) .db_name(Some("default")) .tcp_port(33060);
參數說明
參數
說明
ip_or_hostname
Lindorm寬表引擎的MySQL相容地址。如何擷取,請參見查看串連地址。
重要如果應用部署在ECS執行個體,建議您通過專用網路訪問Lindorm執行個體,可獲得更高的安全性和更低的網路延遲。
如果應用部署在本地,在通過公網串連Lindorm執行個體前,需在控制台開通公網地址。開通方式:在控制台選擇
,在寬表引擎頁簽單擊開通公網地址。通過專用網路訪問Lindorm執行個體,ip_or_hostname請填寫MySQL相容地址對應的專用網路地址。通過公網訪問Lindorm執行個體,ip_or_hostname請填寫MySQL相容地址對應的公網地址。
user
如果您忘記使用者密碼,可以通過Lindorm寬表引擎的叢集管理系統修改密碼。具體操作,請參見修改使用者密碼。
pass
db_name
需要串連的資料庫名稱。預設串連default資料庫。
tcp_port
Lindorm寬表引擎MySQL相容協議的連接埠,固定為33060。
建立串連,通過寬表SQL文法使用Lindorm寬表引擎。以建立表為例。
let pool = Pool::new(opts).unwrap(); let mut conn = pool.get_conn().unwrap(); //建立表 conn.query_drop( r"create table if not exists user_test(id int, name varchar,age int, primary key(id))").expect("Failed to create table");
執行以下命令構建Rust專案。
cargo build
執行以下命令運行Rust專案。
cargo run
完整樣本
完整範例程式碼如下:
use mysql::*;
use mysql::prelude::*;
fn main() {
//串連參數,依次為Lindorm寬表引擎MySQL協議的串連地址、使用者名稱、密碼、資料庫、連接埠
let opts = OptsBuilder::new()
.ip_or_hostname(Some("ld-xxxx-sql-lindorm.lindorm.rds.aliyuncs.com"))
.user(Some("root"))
.pass(Some("root"))
.db_name(Some("default"))
.tcp_port(33060);
let pool = Pool::new(opts).unwrap();
let mut conn = pool.get_conn().unwrap();
//建立表
conn.query_drop( r"create table if not exists user_test(id int, name varchar,age int, primary key(id))").expect("Failed to create table");
//插入資料
conn.exec_drop(r"upsert into user_test(id,name,age) values(?,?,?)",(1,"zhangsan",17)).expect("Failed to insert data 1");
conn.exec_drop(r"upsert into user_test(id,name,age) values(?,?,?)",(2,"lisi",27)).expect("Failed to insert data 2");
//查詢資料
let result = conn.query(r"select * from user_test").expect("Failed to select");
for row in result {
let(id, name, age):(i32, String, i32) = from_row(row);
println!("Id: {}, Name: {}, Age: {}",id, name, age);
}
}
執行成功後將返回如下結果:
Finished dev [unoptimized + debuginfo] target(s) in 0.09s
Running `target/debug/hello_word`
Id: 1, Name: zhangsan, Age: 17
Id: 2, Name: lisi, Age: 27