3个版本
0.0.3 | 2024年7月26日 |
---|---|
0.0.2 | 2024年6月6日 |
0.0.1 | 2024年6月3日 |
#1111 in 过程宏
每月109次下载
在 mysql-connector 中使用
29KB
665 代码行
mysql-connector
简单的Rust MySQL连接器,允许交换底层连接。
特性
tcpstream
(默认启用):实现了tokio的Stream
特性,用于tokio::net::TcpStream
。caching-sha2-password
(默认启用):实现了缓存SHA-2可插入认证插件time
(默认启用):使用tokio::time::sleep
进行网络超时。serde
:为某些类型实现了serde::Serialize
和serde::Deserialize
。
示例
use std::sync::Arc;
use mysql_connector::{
macros::*, model::*, Connection, ConnectionOptions, TcpStream, TcpStreamOptions,
};
#[derive(Debug, ModelData, FromQueryResult, ActiveModel, IntoQuery, Model)]
#[mysql_connector(table = "user", primary = "id", auto_increment = "true")]
pub struct User {
id: u32,
name: String,
email: Option<String>,
}
#[tokio::main]
async fn main() {
dotenv::dotenv().unwrap();
let mut conn = <Connection<TcpStream>>::connect(Arc::new(ConnectionOptions {
user: "user".into(),
password: std::env::var("PASSWORD").unwrap(),
db_name: Some("db".into()),
connection: TcpStreamOptions {
host: "localhost".into(),
..Default::default()
},
..Default::default()
}))
.await
.unwrap();
conn.execute_query(
"CREATE TABLE `user` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) NOT NULL,
`email` VARCHAR(255)
)",
)
.await
.unwrap();
User {
id: 0,
name: String::from("foo"),
email: Some(String::from("[email protected]")),
}
.into_active_model()
.insert(&mut conn)
.await
.unwrap();
User {
id: 0,
name: String::from("bar"),
email: None,
}
.into_active_model()
.insert(&mut conn)
.await
.unwrap();
let users: Vec<User> = conn
.query(&User::build_query())
.await
.unwrap()
.collect()
.await
.unwrap();
println!("{users:?}");
conn.disconnect().await.unwrap();
}
依赖
~260–700KB
~17K SLoC