Tous les produits
Search
Centre de documentation

Lindorm:Développer des applications avec Rust

Dernière mise à jour :Aug 12, 2026

Connectez-vous à LindormTable depuis une application Rust via le protocole de compatibilité MySQL et le crate mysql.

Prérequis

Avant de commencer, vérifiez que vous disposez des éléments suivants :

Se connecter à LindormTable

Étape 1 : Ajouter la dépendance mysql

Dans votre fichier Cargo.toml, ajoutez le crate mysql sous la section [dependencies] :

[dependencies]
mysql = "*"

La valeur * récupère automatiquement la dernière version disponible.

Étape 2 : Configurer les paramètres de connexion

Construisez les options de connexion à l'aide de 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);
Paramètre Description
ip_or_hostname Endpoint LindormTable pour MySQL. Consultez Afficher les endpoints.
user Nom d'utilisateur. Pour réinitialiser un mot de passe oublié, reportez-vous à Gérer les utilisateurs.
pass Mot de passe du compte.
db_name Nom de la base de données. Valeur par défaut : default.
tcp_port Valeur fixe : 33060.

Choisir le type d'endpoint approprié

  • VPC (recommandé pour les applications déployées sur ECS) : Utilisez l'endpoint VPC LindormTable pour MySQL. L'accès via VPC offre une sécurité renforcée et une latence réseau réduite.

  • Internet (pour les clients locaux ou externes) : Utilisez l'endpoint Internet LindormTable pour MySQL. Pour activer l'accès Internet, accédez à la console Lindorm, puis allez dans Database Connections > Wide Table Engine, et cliquez sur Enable Public Endpoint.

Étape 3 : Établir une connexion et exécuter des requêtes SQL

Créez un pool de connexions, obtenez une connexion active, puis utilisez le langage SQL de LindormTable pour manipuler vos données :

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");

Sélectionner la méthode d'exécution adaptée

Méthode Cas d'utilisation
query_drop Instructions DDL (CREATE, DROP) ou DML ne nécessitant pas de résultat
exec_drop Requêtes DML avec liaison de paramètres (upsert, update, delete)
query Instructions SELECT retournant des lignes de données

Étape 4 : Compiler et exécuter l'application

cargo build
cargo run

Exemple de code

L'exemple suivant se connecte à LindormTable, crée une table, insère deux lignes, puis interroge l'ensemble des enregistrements.

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);
    }
}

Résultat attendu :

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

Étapes suivantes