Todos os produtos
Search
Central de documentação

Lindorm:Desenvolver aplicações com base em um framework ORM Python

Última atualização: Jun 28, 2026

Conecte-se ao LindormTable usando SQLAlchemy e execute operações CRUD pela interface compatível com MySQL. Este guia aborda a instalação de dependências, a configuração da conexão, a definição do modelo e a execução de operações de inserção, consulta, atualização e exclusão.

Pré-requisitos

Antes de começar, verifique se você tem:

Instale dependências

O LindormTable expõe um endpoint compatível com MySQL. A conexão via Python exige duas bibliotecas:

  • SQLAlchemy: camada ORM que mapeia classes Python para tabelas de banco de dados e permite escrever consultas em Python em vez de SQL puro

  • PyMySQL: driver de banco de dados que gerencia a comunicação do protocolo MySQL; o SQLAlchemy não inclui driver

Instale ambas:

pip install PyMySQL
pip install SQLAlchemy

Configure a conexão

Use create_engine() para inicializar a conexão com sua instância do LindormTable.

from sqlalchemy import create_engine

engine = create_engine(
    'mysql+pymysql://<user>:<password>@<lindorm_mysql_addr>:33060/<database>',
    echo=True
)

Parâmetro

Descrição

<user>

Nome de usuário do LindormTable. Para redefinir uma senha esquecida, consulte Modifique uma senha de usuário

<password>

Senha do usuário. Para redefinir uma senha esquecida, consulte Modifique uma senha de usuário

<lindorm_mysql_addr>

Endpoint compatível com MySQL. Consulte Visualize endpoints

<database>

Nome do banco de dados de destino. O padrão é default

Escolha do tipo de endpoint:

Implantação

Endpoint a ser usado

Como obter

Aplicação em uma instância ECS (recomendado)

Endpoint VPC compatível com MySQL — oferece maior segurança e menor latência de rede

Consulte Visualize endpoints

Aplicação on-premises

Endpoint de Internet compatível com MySQL

Antes de conectar, ative o endpoint público no console Lindorm: acesse Database Connections > Wide Table Engine e clique em Enable Public Endpoint

Definir um modelo

Defina a estrutura da tabela como uma classe Python usando a base declarativa do SQLAlchemy.

from sqlalchemy import Column, String, Integer, Float
from sqlalchemy.orm import declarative_base

Base = declarative_base()

class Player(Base):
    __tablename__ = 'player'
    player_id = Column(Integer, primary_key=True, autoincrement=False)
    player_name = Column(String(255))
    player_height = Column(Float)

    def __str__(self):
        return " ".join(str(item) for item in (self.player_id, self.player_name, self.player_height))

Executar operações CRUD

Todos os exemplos usam uma sessão do SQLAlchemy para interagir com o LindormTable.

Crie a tabela e inserir dados

from sqlalchemy.orm import sessionmaker

# Create the table based on the model definition
Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

# Insert a single row
new_player = Player(player_id=1001, player_name="john", player_height=2.08)
session.add(new_player)

# Insert multiple rows
session.add_all([
    Player(player_id=1002, player_name="bob", player_height=1.65),
    Player(player_id=1003, player_name="smith", player_height=1.82),
])
session.commit()

Consultar dados

# Query rows matching a filter condition
rows = session.query(Player).filter(Player.player_id == 1001).all()
print([row.__str__() for row in rows])

Atualize dados

# Update a field for rows matching a filter condition
session.query(Player).filter(Player.player_id == 1003).update({"player_name": "brown"})
session.commit()

Exclua dados

# Delete rows matching a filter condition
session.query(Player).filter(Player.player_id == 1002).delete()
session.commit()

Código de exemplo completo

Veja a seguir um exemplo funcional completo. Substitua os espaços reservados da string de conexão pelos valores reais antes de executar.

from sqlalchemy import create_engine
from sqlalchemy import Column, String, Integer, Float
from sqlalchemy.orm import declarative_base
from sqlalchemy.orm import sessionmaker

Base = declarative_base()

# Define the Player model
class Player(Base):
    __tablename__ = 'player'
    player_id = Column(Integer, primary_key=True, autoincrement=False)
    player_name = Column(String(255))
    player_height = Column(Float)

    def __str__(self):
        return " ".join(str(item) for item in (self.player_id, self.player_name, self.player_height))

# Initialize the connection. Replace the placeholders with your actual values.
engine = create_engine(
    'mysql+pymysql://user:test@ld-bp1l39h99192d****-proxy-sql-lindorm-public.lindorm.rds.aliyuncs.com:33060/default',
    echo=True
)
Session = sessionmaker(bind=engine)

# Create the table
Base.metadata.create_all(engine)

# Open a session
session = Session()

# Insert a single row
new_player = Player(player_id=1001, player_name="john", player_height=2.08)
session.add(new_player)

# Insert multiple rows
session.add_all([
    Player(player_id=1002, player_name="bob", player_height=1.65),
    Player(player_id=1003, player_name="smith", player_height=1.82),
])
session.commit()

# Query rows where player_id is 1001
rows = session.query(Player).filter(Player.player_id == 1001).all()
print([row.__str__() for row in rows])

# Delete the row where player_id is 1002
session.query(Player).filter(Player.player_id == 1002).delete()
session.commit()

# Update the row where player_id is 1003
session.query(Player).filter(Player.player_id == 1003).update({"player_name": "brown"})
session.commit()

# Query all remaining rows
rows = session.query(Player).all()
print([row.__str__() for row in rows])

Saída esperada:

['1001 john 2.08']
['1001 john 2.08', '1003 brown 1.82']

Próximos passos