Tous les produits
Search
Centre de documentation

Lindorm:Développer des applications avec mysql-connector-python

Dernière mise à jour :Aug 11, 2026

mysql-connector-python est le connecteur MySQL officiel en pur Python, sans dépendance de bibliothèque C. Ce guide explique comment connecter une application Python à LindormTable et exécuter des opérations CRUD. À l’issue de cette lecture, vous saurez :

  • Installer et configurer le connecteur

  • Vous connecter à LindormTable en mode connexion directe ou via un pool de connexions

  • Créer, insérer, mettre à jour, supprimer et interroger des données en utilisant la syntaxe SQL des tables larges de LindormTable

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

Installer le connecteur

Exécutez la commande suivante pour installer mysql-connector-python 8.0.15 :

pip install mysql-connector-python==8.0.15

Se connecter à LindormTable

Le tableau ci-dessous décrit les paramètres de connexion utilisés dans tous les exemples. Remplacez les valeurs indicatives par vos propres valeurs avant d’exécuter le code.

Paramètre Description Exemple
host L’adresse SQL de table large Lindorm, sans les deux-points ni le numéro de port (:33060). Pour trouver cette valeur, consultez la rubrique Afficher les endpoints. ld-bp1hn6yq0yb34****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com
port Fixé à 33060. 33060
user Votre nom d’utilisateur LindormTable. Pour réinitialiser un mot de passe oublié, consultez la rubrique Modifier votre mot de passe. root
passwd Votre mot de passe LindormTable. —
database La base de données à laquelle se connecter. La valeur par défaut est default si aucun paramètre n’est spécifié. default
Important

Si votre application s’exécute sur une instance Elastic Compute Service (ECS) située dans le même Virtual Private Cloud (VPC) que votre instance Lindorm, connectez-vous via l’endpoint VPC. Dans le cas contraire, utilisez l’endpoint public. Pour activer l’endpoint public, consultez la rubrique Activer LindormSearch.

Important

Créez toujours le curseur avec l’option prepared=True. Sans cela, les chaînes contenant des caractères spéciaux tels que les guillemets doubles (") peuvent être échappées incorrectement lors de l’écriture dans LindormTable.

Choisir un mode de connexion

mysql-connector-python prend en charge deux modes de connexion :

Mode Cas d’utilisation
Connexion directe Opérations ponctuelles ou accès peu fréquents. Ouvre et ferme une nouvelle connexion pour chaque opération.
Pool de connexions Accès fréquent. Réutilise les connexions afin de réduire la surcharge et d’améliorer les performances.

Exemples de code

Mode connexion directe

L’exemple suivant établit une connexion directe et exécute des opérations de création, d’insertion, de suppression, de mise à jour et d’interrogation sur une table de test.

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import json

import mysql.connector

# Establish a connection. Replace the placeholder values with your own.
connection = mysql.connector.connect(
    host='<Lindorm Wide Table SQL Address>',
    port=33060,
    user='<username>',
    passwd='<password>',
    database='default'
)

# Create a cursor. Use prepared=True to handle special characters correctly.
cursor = connection.cursor(prepared=True)

# Create a table.
sql_create_table = (
    "create table if not exists test_python"
    "(c1 integer, c2 integer, c3 varchar, primary key(c1))"
)
print(sql_create_table)
cursor.execute(sql_create_table)

# Insert data — single rows.
sql_upsert = "upsert into test_python(c1, c2, c3) values(?, ?, ?)"
print(sql_upsert)
cursor.execute(sql_upsert, (1, 1, '1'))
cursor.execute(sql_upsert, (2, 2, json.dumps({"key": "value2"})))

# Insert data — two rows in a batch.
sql_upsert_batch = "upsert into test_python(c1, c2, c3) values(?, ?, ?), (?, ?, ?)"
cursor.execute(sql_upsert_batch, (3, 3, '3', 4, 4, json.dumps({"key": "value4"})))

# Delete data.
sql_delete = "delete from test_python where c1 = ?"
print(sql_delete)
cursor.execute(sql_delete, (3,))

# Update data.
sql_update = "upsert into test_python(c1, c2, c3) values(?, ?, ?)"
print(sql_update)
cursor.execute(sql_update, (1, 2, '2'))

# Query a specific row.
sql_select = "select * from test_python where c1 = ?"
print(sql_select)
cursor.execute(sql_select, (4,))
rows = cursor.fetchall()
print(rows)

# Query all rows.
sql_select_all = "select * from test_python"
print(sql_select_all)
cursor.execute(sql_select_all)
rows = cursor.fetchall()
print(rows)

# Close the cursor and connection.
cursor.close()
connection.close()

Mode pool de connexions

L’exemple suivant crée un pool de connexions, récupère une connexion depuis ce pool et exécute le même ensemble d’opérations. Lorsque vous appelez connection.close(), la connexion retourne au pool au lieu d’être fermée définitivement.

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import json

import mysql.connector
from mysql.connector import pooling

# Create a connection pool.
# Adjust pool_size based on your expected workload concurrency.
connection_pool = pooling.MySQLConnectionPool(
    pool_name="mypool",
    pool_size=20,
    host='<Lindorm Wide Table SQL Address>',
    port=33060,
    user='<username>',
    password='<password>',
    database='default',
)

# Get a connection from the pool.
connection = connection_pool.get_connection()

# Create a cursor. Use prepared=True to handle special characters correctly.
cursor = connection.cursor(prepared=True)

# Drop the table if it exists, then recreate it.
sql_drop_table = "drop table if exists test_python"
print(sql_drop_table)
cursor.execute(sql_drop_table)

sql_create_table = (
    "create table test_python"
    "(c1 integer, c2 integer, c3 varchar, primary key(c1))"
)
print(sql_create_table)
cursor.execute(sql_create_table)

# Insert data — single rows.
sql_upsert = "insert into test_python(c1, c2, c3) values(?, ?, ?)"
print(sql_upsert)
cursor.execute(sql_upsert, (1, 1, '1'))
cursor.execute(sql_upsert, (2, 2, '2'))

# Insert data — three rows in a batch.
sql_upsert_batch = (
    "insert into test_python(c1, c2, c3) values(?, ?, ?), (?, ?, ?), (?, ?, ?)"
)
cursor.execute(sql_upsert_batch, (3, 3, '3', 4, 4, '4', 5, 5, '5'))

# Delete data.
sql_delete = "delete from test_python where c1 = ?"
print(sql_delete)
cursor.execute(sql_delete, (3,))

# Update data.
sql_update = "upsert into test_python(c1, c2, c3) values(?, ?, ?)"
print(sql_update)
cursor.execute(sql_update, (1, 2, '2'))

# Query a specific row.
sql_select = "select * from test_python where c1 = ?"
print(sql_select)
cursor.execute(sql_select, (4,))
rows = cursor.fetchall()
print(rows)

# Query all rows.
sql_select_all = "select * from test_python"
print(sql_select_all)
cursor.execute(sql_select_all)
rows = cursor.fetchall()
print(rows)

# Close the cursor.
# Calling connection.close() returns the connection to the pool.
cursor.close()
connection.close()

Étapes suivantes