12个版本 (重大变更)

0.10.0 2024年1月24日
0.8.0 2023年12月22日
0.7.0 2023年7月5日
0.6.0 2022年6月25日
0.3.0-alpha.02020年11月18日

数据库接口中排名1921

Download history 6/week @ 2024-04-20 3/week @ 2024-04-27 1/week @ 2024-05-18 9/week @ 2024-05-25 7/week @ 2024-06-01 1/week @ 2024-06-29 2/week @ 2024-07-06 52/week @ 2024-07-27

每月下载量55

MIT许可证

14KB
210

sqlxinsert

警告:用于私有项目

用于将结构体插入SQL的 derive宏。

无需手动创建插入查询并绑定所有属性

let query = r#"
insert into article 
    ( title, subtitle, url, text ) 
values 
    ( $1, $2, $3, $4 ) 
returning *
"#;

let result: Article = sqlx::query_as::<_, Article>(query)
    .bind(&article.title)
    .bind(&article.subtitle)
    .bind(&article.url)
    .bind(&article.text)
    .fetch_one(&mut conn)
    .await?;

使用 derive宏可以简化为以下形式

let res = car.insert::<Car>(&pool, "cars").await?
不同输入和输出结构体的示例。
#[derive(Default, Debug, std::cmp::PartialEq, sqlx::FromRow)]
struct Car {
    pub id: i32,
    pub name: String,
    pub color: Option<String>
}
#[derive(Default, Debug, sqlx::FromRow, sqlxinsert::PgInsert)]
struct CreateCar {
    pub name: String,
    pub color: Option<String>,
}
impl CreateCar {
    pub fn new<T: Into<String>>(name: T) -> Self {
        CreateCar {
            name: name.into(),
            color: None,
        }
    }
}

#[tokio::main]
async fn main() -> sqlx::Result<()>{
    let url = "postgres://user:pass@localhost:5432/test_db";
    let pool = sqlx::postgres::PgPoolOptions::new().connect(&url).await.unwrap();
    let car_skoda = CreateCar::new("Skoda");
    let res: Car = car_skoda.insert::<Car>(pool, "cars").await?;
    Ok(())
}

构建

makebuild

测试

要求:已安装 docker

maketestall

依赖

~12–27MB
~434K SLoC