Todos los productos
Search
Centro de documentos

Lindorm:Uso de Rust para desarrollar aplicaciones

Última actualización: Sep 05, 2026

Conéctese a LindormTable desde una aplicación en Rust mediante el protocolo de compatibilidad con MySQL y el crate mysql.

Requisitos previos

Antes de empezar, asegúrese de contar con lo siguiente:

Conexión a LindormTable

Paso 1: Agregar la dependencia mysql

En su archivo Cargo.toml, agregue el crate mysql bajo la sección [dependencies]:

[dependencies]
mysql = "*"

Al establecer la versión como *, se obtiene la versión más reciente.

Paso 2: Configurar los parámetros de conexión

Construya las opciones de conexión mediante OptsBuilder:

let opts = OptsBuilder::new()
    .ip_or_hostname(Some("ld-uf6k8yqb741t3****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com"))
    .user(Some("user"))
    .pass(Some("test"))
    .db_name(Some("default"))
    .tcp_port(33060);

Parámetro

Descripción

ip_or_hostname

Endpoint de LindormTable para MySQL. Consulte View endpoints.

user

Nombre de usuario. Para restablecer una contraseña olvidada, consulte Manage users.

pass

Contraseña.

db_name

Nombre de la base de datos. El valor predeterminado es default.

tcp_port

Valor fijo: 33060.

Elección del tipo de endpoint adecuado

  • VPC (recomendado para aplicaciones desplegadas en ECS): Use el endpoint VPC de LindormTable para MySQL. El acceso por VPC ofrece mayor seguridad y menor latencia de red.

  • Internet (para clientes locales o externos): Use el endpoint de Internet de LindormTable para MySQL. Para habilitar el acceso por Internet, vaya a la consola de Lindorm, diríjase a Database Connections > Wide Table Engine y haga clic en Enable Public Endpoint.

Paso 3: Establecer la conexión y ejecutar SQL

Cree un pool de conexiones y obtenga una conexión; después, use el lenguaje SQL de LindormTable para operar sobre sus datos:

let pool = Pool::new(opts).unwrap();
let mut conn = pool.get_conn().unwrap();

// Create a table
conn.query_drop(
    r"create table if not exists user_test(id int, name varchar, age int, primary key(id))"
).expect("Failed to create table");

Selección del método de ejecución adecuado

Método

Cuándo usarlo

query_drop

Sentencias DDL (CREATE, DROP) o DML cuando no se requiere el resultado

exec_drop

DML con enlace de parámetros (upsert, update, delete)

query

Sentencias SELECT que devuelven filas

Paso 4: Compilar y ejecutar

cargo build
cargo run

Código de ejemplo

A continuación se muestra un ejemplo que se conecta a LindormTable, crea una tabla, inserta dos filas y consulta todas las filas.

use mysql::*;
use mysql::prelude::*;

fn main() {
    // Configure the endpoint, credentials, database, and port
    let opts = OptsBuilder::new()
        .ip_or_hostname(Some("ld-xxxx-sql-lindorm.lindorm.rds.aliyuncs.com"))
        .user(Some("root"))
        .pass(Some("root"))
        .db_name(Some("default"))
        .tcp_port(33060);

    let pool = Pool::new(opts).unwrap();
    let mut conn = pool.get_conn().unwrap();

    // Create a table
    conn.query_drop(
        r"create table if not exists user_test(id int, name varchar, age int, primary key(id))"
    ).expect("Failed to create table");

    // Insert data using upsert
    conn.exec_drop(
        r"upsert into user_test(id,name,age) values(?,?,?)",
        (1, "zhangsan", 17)
    ).expect("Failed to insert data 1");
    conn.exec_drop(
        r"upsert into user_test(id,name,age) values(?,?,?)",
        (2, "lisi", 27)
    ).expect("Failed to insert data 2");

    // Query all rows
    let result = conn.query(r"select * from user_test").expect("Failed to select");
    for row in result {
        let (id, name, age): (i32, String, i32) = from_row(row);
        println!("Id: {}, Name: {}, Age: {}", id, name, age);
    }
}

Salida esperada:

Finished dev [unoptimized + debuginfo] target(s) in 0.09s
     Running `target/debug/hello_word`
Id: 1, Name: zhangsan, Age: 17
Id: 2, Name: lisi, Age: 27

Pasos siguientes