Gestisci i dati di Platform tramite Python e SQLAlchemy

Scopri come utilizzare SQLAlchemy per una maggiore flessibilità nella gestione dei dati Adobe Experience Platform. Per coloro che non hanno familiarità con SQL, SQLAlchemy può migliorare notevolmente i tempi di sviluppo quando si lavora con i database relazionali. In questo documento vengono fornite istruzioni ed esempi per connettere SQLAlchemy a Query Service e iniziare a utilizzare Python per interagire con i database.

SQLAlchemy è un Object Relational Mapper (ORM) e una libreria di codici Python in grado di trasferire i dati archiviati in un database SQL in oggetti Python. È quindi possibile eseguire operazioni CRUD sui dati contenuti nel data lake di Platform utilizzando il codice Python. Questo elimina la necessità di gestire i dati utilizzando solo PSQL.

Introduzione

Per acquisire le credenziali necessarie per la connessione di SQLAlchemy a Experience Platform, è necessario avere accesso all'area di lavoro Query nell'interfaccia utente di Platform. Se al momento non disponi dell’accesso all’area di lavoro Query, contatta l’amministratore dell’organizzazione.

Query Service credenziali credentials

Per trovare le credenziali, accedi all'interfaccia utente di Platform e seleziona Query dal menu di navigazione a sinistra, seguito da Credenziali. Per le istruzioni complete su come trovare le credenziali di accesso, leggere la guida delle credenziali.

La scheda Credenziali con le credenziali in scadenza per Query Service è evidenziata.

Sebbene la porta 80 sia la porta consigliata per una connessione a Query Service, è possibile utilizzare anche la porta 5432.

IMPORTANT
Se utilizzi le credenziali in scadenza (come mostrato nell’immagine precedente) per connetterti a Query Service, la durata della sessione per la connessione scadrà dopo il periodo di tempo impostato definito nelle impostazioni della tua organizzazione. Per impostazione predefinita, questo periodo è di 24 ore. Consulta la documentazione per scoprire come connettere un client con credenziali senza scadenza o come modificare la durata della sessione per le credenziali in scadenza.

Una volta ottenuto l'accesso alle credenziali QS, apri l'editor Python scelto.

Memorizza credenziali in Python store-credentials

Nell'editor Python, importare la libreria urllib.parse.quote e salvare ogni variabile di credenziali come parametro. Il modulo urllib.parse fornisce un'interfaccia standard per suddividere le stringhe URL in componenti. La funzione delle virgolette sostituisce i caratteri speciali nella stringa URL per rendere i dati sicuri da utilizzare come componenti URL. Di seguito è riportato un esempio del codice richiesto:

TIP
Utilizza le virgolette triple di Python per immettere la stringa della password su più righe.
from urllib.parse import quote

host = "<YOUR_HOST>"

port = "<YOUR_PORT>"

dbname = "<YOUR_DATABASE>"

user = "<YOUR_USERNAME>"

password = quote('''
<YOUR_PASSWORD>
''')
NOTE
La password fornita per connettere SQLAlchemy a Experience Platform scadrà se si utilizzano credenziali in scadenza. Per ulteriori informazioni, vedere la sezione delle credenziali.

Crea un'istanza del motore [#create-engine]

Dopo aver creato le variabili, importare la funzione create_engine e creare una stringa per compilare e formattare le credenziali di Query Service in SQLAlchemy. La funzione create_engine viene quindi utilizzata per creare un'istanza del motore.

NOTE
create_enginerestituisce un'istanza di un motore. Tuttavia, non apre la connessione a Query Service finché non viene chiamata una query che richiede una connessione.

SSL deve essere abilitato quando si accede a Platform utilizzando client di terze parti. Come parte del motore, utilizzare connect_args per immettere argomenti aggiuntivi per parole chiave. Si consiglia di impostare la modalità SSL su require. Consulta la documentazione sulle modalità SSL per ulteriori informazioni sui valori accettati.

Nell'esempio seguente viene visualizzato il codice Python necessario per inizializzare un motore e una stringa di connessione.

from sqlalchemy import create_engine

db_string = "postgresql://{user}:{password}@{host}:{port}/{dbname}".format(
    user=user,
    password=password,
    host=host,
    port = port,
    dbname = dbname
)

engine = create_engine(db_string, connect_args={'sslmode':'require'})
NOTE
La password fornita per connettere SQLAlchemy a Experience Platform scadrà se si utilizzano credenziali in scadenza. Per ulteriori informazioni, vedere la sezione delle credenziali.

È ora possibile eseguire query sui dati di Platform utilizzando Python. L’esempio riportato di seguito restituisce una matrice di nomi di tabella di Query Service.

from sqlalchemy import inspect
insp = inspect(engine)
print(insp.get_table_names())
recommendation-more-help
ccf2b369-4031-483f-af63-a93b5ae5e3fb