mysql-connector-python es el conector oficial de MySQL escrito completamente en Python y no requiere dependencias de bibliotecas en C. Esta guía le muestra cómo conectar una aplicación en Python a LindormTable y ejecutar operaciones CRUD. Al finalizar, usted podrá:
Instalar y configurar el conector
Conectarse a LindormTable mediante el modo de conexión directa o el modo de pool de conexiones
Crear, insertar, actualizar, eliminar y consultar datos con la sintaxis SQL de tabla ancha de LindormTable
Requisitos previos
Antes de empezar, asegúrese de contar con lo siguiente:
Python 3.8 o una versión posterior instalada
La compatibilidad con MySQL habilitada para su instancia de Lindorm. Para más detalles, consulte Enable the MySQL compatibility feature
Su dirección IP del cliente agregada a la lista de permitidos de la instancia. Para más detalles, consulte Configure whitelists
Instale el conector
Ejecute el siguiente comando para instalar mysql-connector-python 8.0.15:
pip install mysql-connector-python==8.0.15
Conéctese a LindormTable
A continuación se describen los parámetros de conexión que se utilizan en todos los ejemplos. Reemplace los valores de marcador de posición por sus valores reales antes de ejecutar cualquier código.
|
Parámetro |
Descripción |
Ejemplo |
|
|
La Lindorm Wide Table SQL Address, sin los dos puntos ni el número de puerto ( |
|
|
|
Fijo en |
|
|
|
Su nombre de usuario de LindormTable. Para restablecer una contraseña olvidada, consulte Change your password. |
|
|
|
Su contraseña de LindormTable. |
— |
|
|
La base de datos a la que se conectará. Si no se especifica, el valor predeterminado es |
|
Si su aplicación se ejecuta en una instancia de Elastic Compute Service (ECS) dentro de la misma Virtual Private Cloud (VPC) que su instancia de Lindorm, conéctese mediante el endpoint de VPC. De lo contrario, utilice el endpoint público. Para habilitar el endpoint público, consulte Activate LindormSearch.
Cree siempre el cursor con prepared=True. Sin este parámetro, las cadenas que contienen caracteres especiales, como las comillas dobles ("), podrían escaparse de forma incorrecta al escribirse en LindormTable.
Elija un modo de conexión
mysql-connector-python admite dos modos de conexión:
|
Modo |
Cuándo utilizarlo |
|
Conexión directa |
Operaciones únicas o accesos poco frecuentes. Abre y cierra una conexión nueva por cada operación. |
|
Pool de conexiones |
Accesos frecuentes. Reutiliza las conexiones para reducir la sobrecarga y mejorar el rendimiento. |
Ejemplos de código
Modo de conexión directa
El siguiente ejemplo establece una conexión directa y ejecuta operaciones de creación, inserción, eliminación, actualización y consulta en una tabla de prueba.
#!/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()
Modo de pool de conexiones
En este ejemplo se crea un pool de conexiones, se obtiene una conexión de él y se ejecuta el mismo conjunto de operaciones. Cuando se llama a connection.close(), la conexión regresa al pool en lugar de cerrarse de forma permanente.
#!/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()
Pasos siguientes
View endpoints: busque el endpoint correcto para acceder desde la VPC o de forma pública
Change your password: restablezca sus credenciales de LindormTable