PyODPS s'intègre à SQLAlchemy, ce qui vous permet d'interroger les données MaxCompute en utilisant la syntaxe standard de SQLAlchemy. Vous pouvez établir une connexion et appeler l'API SQLAlchemy pour créer des tables, insérer des données et exécuter des requêtes.
Établir une connexion
Établissez une connexion comme suit.
import os
from sqlalchemy import create_engine
# Ensure that the ALIBABA_CLOUD_ACCESS_KEY_ID environment variable is set to your AccessKey ID,
# and the ALIBABA_CLOUD_ACCESS_KEY_SECRET environment variable is set to your AccessKey secret.
# For security, avoid hardcoding your AccessKey ID and AccessKey secret in the connection string.
conn_string = 'odps://%s:%s@<project>/?endpoint=<endpoint>' % (
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_ID'),
os.getenv('ALIBABA_CLOUD_ACCESS_KEY_SECRET'),
)
engine = create_engine(conn_string)
conn = engine.connect()
-
ALIBABA_CLOUD_ACCESS_KEY_ID : votre AccessKey ID disposant des permissions nécessaires pour accéder au projet MaxCompute cible. Nous vous recommandons de le définir en tant que variable d'environnement.
Vous pouvez obtenir votre AccessKey ID depuis la page AccessKey Pair.
-
ALIBABA_CLOUD_ACCESS_KEY_SECRET : le AccessKey secret correspondant à votre AccessKey ID. Nous vous recommandons de le définir en tant que variable d'environnement.
Vous pouvez obtenir votre AccessKey secret depuis la page AccessKey Pair.
-
project : le nom du projet MaxCompute cible.
Il s'agit du nom du projet MaxCompute, et non du nom de l'espace de travail. Pour trouver le nom de votre projet, connectez-vous à la console MaxCompute et accédez à Workspace > Projects dans le volet de navigation de gauche.
-
endpoint : le endpoint de la région où se trouve le projet MaxCompute cible.
Pour obtenir la liste des endpoints par région, consultez la rubrique Endpoints.
Si vous disposez déjà d'un objet ODPS o et que vous l'avez défini comme objet ODPS global en appelant o.to_global(), vous pouvez omettre les paramètres précédents de la chaîne de connexion. Par exemple :
from sqlalchemy import create_engine
o.to_global() # Make the ODPS object global
engine = create_engine('odps://')
Utiliser l'API SQLAlchemy
Les exemples suivants montrent comment créer une table, insérer des données et interroger des données :
-
Créer une table
from sqlalchemy import Table, Column, Integer, String, MetaData metadata = MetaData() users = Table('users', metadata, Column('id', Integer), Column('name', String), Column('fullname', String), ) metadata.create_all(engine) -
Insérer des données
ins = users.insert().values(id=1, name='jack', fullname='Jack Jones') conn.execute(ins) -
Interroger des données
from sqlalchemy.sql import select s = select([users]) result = conn.execute(s) for row in result: print(row)Sortie attendue :
(1, 'jack', 'Jack Jones')