在rust中使用mysql可以使用mysql_async实现,mysql_async库是基于Tokio的异步MySql客户端库。
添加Tokio库
由于mysql_async是基于Tokio开发的,因此需要导入Tokio,同时也能更方便异步开发
在Cargo.toml
中的[dependencies]
下加入
1 | tokio = { version = "*", features = ["full"] } |
添加mysql_async库
在当前目录执行
1 | cargo add mysql_async |
即可导入最新版本的mysql_async库
在rust中引入mysql_async库
在顶端加入
1 | use mysql_async::prelude::*; |
初始化
初始化tokio
使用tokio宏在main函数中初始化tokio
1 |
|
创建mysql连接
1 | // mysql连接url |
由于get_conn
是异步方法,所以需要使用await
去推动执行
mysql查询
可以使用Trait mysql_async::prelude::Query
和Trait mysql_async::prelude::Queryable
进行sql查询
查询示例:
1 | // 创建表 |
上面示例中,使用Trait mysql_async::prelude::Query
的ignore
方法进行sql查询,Trait Query
中有impl<Q: AsQuery> Query for Q
,它为满足于AsQuery
Trait约束的所有类型实现了Query
Trait的方法(其中包括ignore)
而在Trait AsQuery
中又有impl AsQuery for &str
,故&str
实现了AsQuery
Trait,因此可以使用ignore
方法
更多实现了AsQuery
Trait的类型可以参考: AsQuery
安全的sql查询
使用params!
宏可以安全的将rust变量替换到sql语句中
示例:
1 | let select_data: Option<Row> = r"SELECT name, score FROM registry WHERE id=:id" |
params!
宏会替换:
标记的文本,使用with
方法去将params!
应用的查询语句中,随后再调用查询方法即可
批量sql查询
示例:
1 | struct Data { |
with
方法可以传入一个params!迭代器,随后调用batch
方法即可批量替换sql语句进行查询
清理工作
1 | // 关闭mysql连接 |
完整示例代码
1 | use mysql_async::prelude::*; |
rust使用mysql_async库
https://blog.lingxh.com/post/rust-mysql-async/Author
lingxh
Published at
2024-04-25
License
CC BY-NC-SA 4.0