O mysql-connector-python é o conector oficial MySQL escrito puramente em Python, sem dependências de bibliotecas C. Este guia demonstra como conectar uma aplicação Python ao LindormTable e executar operações CRUD. Ao final, você poderá:
Instale e configure o conector
Conectar-se ao LindormTable no modo de conexão direta ou pool de conexões
Crie, inserir, atualize, exclua e consultar dados com a sintaxe SQL de tabela ampla do LindormTable
Pré-requisitos
Antes de começar, verifique se você tem:
Python 3.8 ou superior instalado
Compatibilidade com MySQL ativada na instância Lindorm. Para mais detalhes, consulte Ative o recurso de compatibilidade com MySQL
Endereço IP do cliente adicionado à lista de permissões da instância. Para mais detalhes, consulte Configure listas de permissões
Instale o conector
Execute o comando a seguir para instalar o mysql-connector-python 8.0.15:
pip install mysql-connector-python==8.0.15
Conecte-se ao LindormTable
A tabela a seguir descreve os parâmetros de conexão usados em todos os exemplos. Substitua os valores de exemplo pelos seus valores reais antes de executar qualquer código.
|
Parâmetro |
Descrição |
Exemplo |
|
|
O Lindorm Wide Table SQL Address, sem os dois pontos e o número da porta ( |
|
|
|
Fixo em |
|
|
|
Nome de usuário do LindormTable. Para redefinir uma senha esquecida, consulte Alterar sua senha. |
|
|
|
Senha do LindormTable. |
— |
|
|
Banco de dados de destino da conexão. Assume o valor |
|
Se a aplicação estiver em uma instância Elastic Compute Service (ECS) na mesma Virtual Private Cloud (VPC) da instância Lindorm, conecte-se pelo endpoint VPC. Caso contrário, use o endpoint público. Para ativar o endpoint público, consulte Ative o LindormSearch.
Sempre crie o cursor com prepared=True. Sem essa configuração, strings com caracteres especiais, como aspas duplas ("), podem ter escape incorreto durante a gravação no LindormTable.
Escolha um modo de conexão
O mysql-connector-python oferece suporte a dois modos de conexão:
|
Modo |
Quando usar |
|
Conexão direta |
Ideal para operações únicas ou acessos pouco frequentes. Abre e fecha uma nova conexão para cada operação. |
|
Pool de conexões |
Recomendado para acessos frequentes. Reutiliza conexões para reduzir sobrecarga e melhorar o desempenho. |
Exemplos de código
Modo de conexão direta
O exemplo a seguir estabelece uma conexão direta e executa operações de criação, inserção, exclusão, atualização e consulta em uma tabela de teste.
#!/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 conexões
Este exemplo cria um pool de conexões, obtém uma conexão dele e executa o mesmo conjunto de operações. Ao chamar connection.close(), a conexão retorna ao pool em vez de ser encerrada permanentemente.
#!/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()
Próximos passos
Visualize endpoints — Encontre o endpoint correto para acesso via VPC ou público
Alterar sua senha — Redefina suas credenciais do LindormTable