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.
Även om port 80 är den rekommenderade porten för en anslutning till Query Service kan du även använda port 5432.
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:
from urllib.parse import quote
host = "<YOUR_HOST>"
port = "<YOUR_PORT>"
dbname = "<YOUR_DATABASE>"
user = "<YOUR_USERNAME>"
password = quote('''
<YOUR_PASSWORD>
''')
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.
create_engine
returnerar 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'})
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())