rust连接mysql建表测试

Li Guangqiao - 29/05/2023

Rust MySql DataBase

rust连接mysql建表测试

前期准备

src
|--mysql_connect
	|--mod.rs
	|--database_test.rs
|--main.rs

mod.rs的内容

//导出模块database_test
pub mod database_test;
//导入模块database_test所有函数
pub use database_test::*;
use actix_web::{get, post, web, App, HttpResponse, HttpServer, Responder};
use mysql::{PooledConn, prelude::Queryable};
use serde::Deserialize;
const DATA_SOURCE_URL:&str = "mysql://root:lgq1995@localhost:3306/example";
// #[derive(Debug)]
#[derive(Deserialize,Debug)]
struct Info{
    name:String
}
//建表接口
#[get("/create_table")]
async fn create_table(info:web::Query<Info>) -> impl Responder{
    println!("name:{:?}",info.name);
    //Step 1 连接数据库
    let mut conn = connect();
    //Step 2 定义建表语句
    //TEMPORARY建一个永久表(非临时表)
    let create_table_sql= format!(r"CREATE TABLE {} (
             test_id int not null,
             username text,
             password text
        )",info.name);
    println!("{}",create_table_sql);
    //Step 3 执行建表方法
    let re  = conn.query_drop(create_table_sql);
    println!("{:?}",re.is_ok());
    //Step 4 根据执行结果,返回请求体
    if re.is_ok() {
        HttpResponse::Ok().body("建表成功")
    }else{
        HttpResponse::Ok().body("建表失败")
    }
}
fn connect()->PooledConn{
    use mysql::{Pool, PooledConn, prelude::*};
    let url = DATA_SOURCE_URL;
    // 连接数据库服务
    let pool = Pool::new(url).unwrap();
    let mut conn = pool.get_conn().unwrap();
    // 返回数据库连接
    conn
}  
use actix_web::{get, post, web, App, HttpResponse, HttpServer, Responder};
//使用模块mysql_connect
mod mysql_connect;

#[actix_web::main]
async fn main() -> std::io::Result<()> {
    HttpServer::new(|| {
        App::new()
       .service(mysql_connect::database_test::create_table)
    })
    .bind(("127.0.0.1", 8080))?
    .run()
    .await
}

访问8080端口,查看响应体中的建表信息

Li Guangqiao
Li Guangqiao

一个正在转rust的ExtJs前端工程师。迷信rust的整体发展,十分相信rust在各个领域都能发光发热,至少目前rust在很多领域上验证了其安全性、易维护性。但说实话对于我这种菜鸡也是真的难上手哈哈哈~~。 思路总结:

  • 万物诞生都会有一个需求来源,每一个改变都是为了解决某个问题,最后应该考虑如何去做
  • 学会掌握一些宏观的知识和理论:系统论、还原论
  • 工程化思想,如何描述整体,从整体架构到模块关联等 故学习东西应该像看地图一样,先看整体了解整体的结构,然后再聚焦每一个模块,对于模块的学习,思考三个问题,“是什么?”、“为什么?”、“怎么做?”;那么设计一个东西时也应该去考虑整体性和关联性。

有关于未来的发展,以下是鄙人的粗浅的观点:

  • 编程语言未来应该是每个人必备的工具
  • 未来的交互方式应该会以语言交互为主流
  • 下一个去中心化的技术方案出来之前,区块链依然是web3建立价值体系的基础技术方案,如何将现实价值和虚拟价值联通是进入数字世界的一个大难题。
  • 未来注定是AI的世界。AI的进化会伴随绝大部分人的退化,届时除了尖端人才,人们学习的重心会放在何处?