青阳做网站,网站开发后端是什么,打开浏览器,学广告设计要多久能学会可以操作pgsql、mysql、mssql、sqlite 异步的#xff0c;性能应该不错#xff0c;具体使用有几个坑 除了sqlx库#xff0c;还有对于具体数据库的库#xff0c;比如postgres库 演示以pgsql为例#xff0c;更新时间2024.1.6 官方github: sqlx github rust官方文档#xff1…可以操作pgsql、mysql、mssql、sqlite 异步的性能应该不错具体使用有几个坑 除了sqlx库还有对于具体数据库的库比如postgres库 演示以pgsql为例更新时间2024.1.6 官方github: sqlx github rust官方文档rust sqlx库文档
一、项目配置
1.添加依赖
cargo.toml的[dependencies] sqlx依赖tokio的异步运行时或者async-std的运行时所以要加上
sqlx { version 0.7.3,features [postgres, runtime-async-std] }
# 下面二选一了
tokio {version 1.35.1,features [full]}
async-std { version 1.12.0 }2.引入模块
根据需要引入通常
use sqlx;3.函数运行时
#[tokio::main]
fn xxx(){
}二、数据库连接和sql操作
更多的操作看官方文档。 以pgsql为例mysql等其他数据库需要调整函数
1.数据库连接连接池
sqlx库自带连接池这样可以省去在数据库外再布置连接池 这里封装成函数使用作为一个pub函数调用的函数用运行时即可注意修改数据库账号密码
/// pgsql连接
pub async fn pgsql_conn() - sqlx::PoolPostgres {return PgPoolOptions::new().max_connections(10).connect(postgres://postgres:password192.168.x.x:5432/datebase_name).await.unwrap();
}调用时注意是异步的
let pg_conncrate::xxx::pgsql_conn().await;2.执行sql
封装好的函数执行sql适用于pgsql
/// pgsql的sql执行
/// param database_conn 数据库连接
/// param sql 执行的sql
pub async fn pgsql_sql_execute(database_conn: sqlx::PgPool,sql:str) - Vecsqlx::postgres::PgRow {return sqlx::query(sql).fetch_all(database_conn).await.unwrap();
}调用时(注意xxx改为自己的目录)
let poolcrate::xxx::pgsql_conn().await;
let sqlselect * from xxx limit 10;
let resescrate::xxx::pgsql_sql_execute(pool,sql).await;
// 迭代每行假设这个表有一个id的字段
for res in reses
{let column: i32 res.get(id);println!({},column);
}三、错误及解决
1.either the runtime-async-std or runtime-tokio feature must be enabled
这个问题出在sqlx的依赖当初这个迷惑了一段时间同时需要 在crago的[dependencies]里面 或者 同时需要函数的异步运行时 当然有好几个可以用可以参考github的说明有多个运行时可以选取