2015-01-30 4 views
14

Ich möchte eine Verbindung zu einer Remote-PostgreSQL-Datenbank durch Python, um einige grundlegende Datenanalyse zu tun. Diese Datenbank erfordert SSL (verify-ca), zusammen mit drei Dateien (die ich habe):Wie verbinde ich mich mit einer entfernten PostgreSQL-Datenbank mit Python

  • Server Stammzertifikatsdatei
  • Client-Zertifikat-Datei
  • Schlüssel Client-Datei

Ich habe konnte kein Tutorial finden, das beschreibt, wie man diese Verbindung mit Python herstellt. Jede Hilfe wird geschätzt.

+0

psycopg2. Suche das in Google. –

+0

@GamesBrainiac Danke. Ich habe. Das Problem ist mit den zusätzlichen SSL-Anforderungen. Ich konnte die Syntax dafür nicht finden. – Pep

+1

@Pep, SSL-Optionen sind hier beschrieben: https://www.postgresql.org/docs/current/static/libpq-connect.html#LIBPQ-PARAMKEYWORDS Sie können alle diese an die 'connect'-Methode übergeben. – bluesmoon

Antwort

24

Verwenden Sie das Modul psycopg2.

Sie müssen die ssl-Optionen in Ihrer Verbindungszeichenfolge verwenden oder sie als Schlüsselwort Argumente hinzufügen:

import psycopg2 

conn = psycopg2.connect(database='yourdb', user='dbuser', password='abcd1234', host='server', port='5432', sslmode='require') 

In diesem Fall sslmode gibt an, dass SSL erforderlich ist.

Um die Serverzertifikatsprüfung durchzuführen, können Sie sslmode auf verify-full oder verify-ca setzen. Sie müssen den Pfad zum Serverzertifikat in sslrootcert angeben. Setzen Sie außerdem die Werte sslcert und sslkey auf Ihr Clientzertifikat bzw. Ihren Schlüssel.

Es wird im PostgreSQL Connection Strings documentation (siehe auch Parameter Key Words) und in SSL Support ausführlich erklärt.

+3

in Django funktioniert das, wenn Sie so etwas wie angeben: ''OPTIONS': {'sslmode': 'verify-full', 'sslrootcert': '/etc/pki/CA/certs/cabundle.pem'}' als Zusätzliche 'Option' zu Ihrem DATABASES ['default'] dict. –

Verwandte Themen