本文介紹基于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
文檔內容是否對您有幫助?