如何将mysql::value::Value转换为其他数据类型,如f64,i32,在Rust?

cl25kdpy  于 2023-10-20  发布在  Mysql
关注(0)|答案(1)|浏览(130)

我正在尝试从MySQL Row中获取数据,代码如下

conn.query_iter("select * from TheForm")
    .unwrap()
    .for_each(|row| {
        println!("{:?}", &row.unwrap().unwrap());
    });

输出类似于:

[Bytes("16376158.."), Bytes("55683.3"), Bytes("55739.7"), Bytes("55705.8"), Bytes("55717.7"), Bytes("5.21118")]

我如何从数组中获取数据,比如如果我想要数组中的第一个索引,我打印&row.unwrap().unwrap()[0],输出是Bytes("16376158.."),我如何将数组转换为f64,String或其他类型?

dauxcl2d

dauxcl2d1#

有多种方法可以运行查询并读取结果集。一种方法是读取元组的向量:

let q = "SELECT some_int, some_text FROM some_table";
let mut tx = conn.start_transaction(TxOpts::default())?;
let rows: Vec<(i32, String)> = tx.query(q)?;
for r in rows {
    let my_int = r.0;
    let my_str = r.1;
}

你可以在docs中看到更多的例子,比如这个:

let selected_payments = conn
    .query_map(
        "SELECT customer_id, amount, account_name from payment",
        |(customer_id, amount, account_name)| {
            Payment { customer_id, amount, account_name }
        },
    )?;

还有其他运行查询的方法。看看文档中的query*exec*方法。

相关问题