Hantera plattformsdata med Python och SQLAlchemy

Lär dig hur du använder SQLAlchemy för större flexibilitet i hanteringen av dina Adobe Experience Platform-data. För dem som inte är lika bekanta med SQL kan SQLAlchemy avsevärt förbättra utvecklingstiden när de arbetar med relationsdatabaser. Det här dokumentet innehåller instruktioner och exempel för att ansluta SQLAlchemy till frågetjänsten och börja använda Python för att interagera med dina databaser.

SQLAlchemy är en ORM (Object Relational Mapper) och ett Python-kodbibliotek som kan överföra data som lagras i en SQL-databas till Python-objekt. Du kan sedan utföra CRUD-åtgärder på data som finns i sjön med plattformsdata med hjälp av koden Python. Detta eliminerar behovet av att hantera data med enbart PSQL.

Komma igång

Om du vill få de nödvändiga autentiseringsuppgifterna för att ansluta SQLAlchemy till Experience Platform måste du ha tillgång till arbetsytan Frågor i plattformsgränssnittet. Kontakta din organisationsadministratör om du inte har tillgång till arbetsytan Frågor.

Query Service autentiseringsuppgifter credentials

Om du vill hitta dina autentiseringsuppgifter loggar du in på plattformsgränssnittet och väljer Queries i den vänstra navigeringen, följt av Credentials. Fullständiga anvisningar om hur du hittar dina inloggningsuppgifter finns i handboken för inloggningsuppgifter.

Fliken Autentiseringsuppgifter med utgångsdatum för frågetjänsten är markerad.

Även om port 80 är den rekommenderade porten för en anslutning till Query Service kan du även använda port 5432.

IMPORTANT
Om du använder utgångna inloggningsuppgifter (enligt bilden ovan) för att ansluta till Query Service, kommer sessionstiden för din anslutning att upphöra efter den angivna tidsperiod som anges i organisationens inställningar. Som standard är den här perioden 24 timmar. Läs dokumentationen om du vill veta mer om hur du ansluter en klient med autentiseringsuppgifter som inte upphör att gälla eller hur du ändrar sessionstiden för de autentiseringsuppgifter som upphör att gälla.

När du har åtkomst till dina QS-autentiseringsuppgifter öppnar du den Python-redigerare du vill använda.

Lagra autentiseringsuppgifter i Python store-credentials

I Python-redigeraren importerar du urllib.parse.quote-biblioteket och sparar varje autentiseringsvariabel som en parameter. Modulen urllib.parse innehåller ett standardgränssnitt för att bryta URL-strängar i komponenter. Citattfunktionen ersätter specialtecken i URL-strängen för att göra data säkra att använda som URL-komponenter. Ett exempel på den kod som krävs visas nedan:

TIP
Använd Pythons trippelcitattecken för att ange lösenordssträngen för flera rader.
from urllib.parse import quote

host = "<YOUR_HOST>"

port = "<YOUR_PORT>"

dbname = "<YOUR_DATABASE>"

user = "<YOUR_USERNAME>"

password = quote('''
<YOUR_PASSWORD>
''')
NOTE
Lösenordet som du anger för att ansluta SQLAlchemy till Experience Platform går ut om du använder förfalloautentiseringsuppgifter. Mer information finns i avsnittet autentiseringsuppgifter.

Skapa en motorinstans [#create-engine]

När variablerna har skapats importerar du funktionen create_engine och skapar en sträng för att kompilera och formatera dina autentiseringsuppgifter för frågetjänsten i SQLAlchemy. Funktionen create_engine används sedan för att konstruera en motorinstans.

NOTE
create_enginereturnerar en instans av en motor. Anslutningen till frågetjänsten öppnas dock inte förrän en fråga som kräver en anslutning anropas.

SSL måste vara aktiverat vid åtkomst till plattformen med tredjepartsklienter. Som en del av motorn använder du connect_args för att ange ytterligare nyckelordsargument. Du rekommenderas att ange SSL-läget till require. Mer information om godkända värden finns i dokumentationen för SSL-lägen.

I exemplet nedan visas den Python-kod som krävs för att initiera en motor och anslutningssträng.

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
Lösenordet som du anger för att ansluta SQLAlchemy till Experience Platform går ut om du använder förfalloautentiseringsuppgifter. Mer information finns i avsnittet autentiseringsuppgifter.

Du kan nu fråga efter plattformsdata med Python. Exemplet nedan returnerar en array med frågetjänsttabellnamn.

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