[PYTHON] Ich möchte aus verschiedenen Sprachen eine Verbindung zu PostgreSQL herstellen

Dieser Artikel ist der vierte Tag von PostgreSQL Adventskalender 2015. Der dritte Tag war kasa_zip.

Das Gebiet der Datenanalyse war in den letzten Jahren sehr beschäftigt. Spark / Hadoop kann für große Maßstäbe erforderlich sein, RDBMS ist jedoch für einige Maßstäbe ausreichend. Insbesondere PostgreSQL bietet reichlich JSON-Unterstützung, sodass eine mittelgroße Analyseplattform ausreichen würde.

Organisieren wir also die Treibermodule für die Verbindung zu PostgreSQL aus jeder Sprache.

Für Java

Der PostgerSQL-JDBC-Treiber wird bereitgestellt. Verwenden wir ihn also. download

jdbc.png

Wählen Sie bei der Auswahl des zu verwendenden JDBC-Treibers basierend auf der JDK-Version der Ausführungsumgebung. Für JDK 1.8 ist beispielsweise ein JDBC42-Treiber erforderlich. Verwenden Sie daher einen der 9.4 Build 1202-1206. Das Kommunikationsprotokoll von PostgreSQL ist weil es in 7.4 oder höher üblich ist, und selbst wenn Sie den Treiber von 9.4 verwenden, können Sie eine Verbindung zu PostgreSQL von 7.4 oder höher herstellen. Es gibt kein Problem. Sie sollten den neuesten Treiber verwenden, der das von Ihnen verwendete JDK unterstützt.

Da der JDBC-Treiber für PostgreSQL Pure Java ist, benötigt er kein libpq und arbeitet unabhängig. Daher sollte nur der heruntergeladene Treiber zum CLASSPATH hinzugefügt werden.

Für Python

Im Fall von Python ist es in PostgreSQL-Wiki organisiert. jdbc1.png

Wie Sie in der Tabelle sehen können, bietet Python mehrere Treiber. Hören Sie den Namen oft in den folgenden drei Bereichen?

In Bezug auf die Anzahl der DLs ist pyscopg2 überwältigend. Tatsächlich wurde es häufig verwendet und ist einfach zu verwenden, da es mit beiden Python 2/3-Serien kompatibel ist. Da psycopg2 jedoch von ** libpq ** abhängt, ist ein Paket wie postgresql-devel erforderlich.

Auf der anderen Seite sind pg8000 und py-postgresql in Pure Python implementiert, sodass libpq nicht erforderlich ist. In dieser Hinsicht sind die Einführungskosten niedrig, aber ** pg8000 ** unterstützt ** nur die Python2-Serie ** </ del> ** py-postgresql ** unterstützt ** nur die Python3-Serie ** Bitte beachte, dass.

Wenn es sich um ein einfaches Tool handelt, ist der PurePython-Treiber einfacher, aber unter Berücksichtigung der Stabilität usw. scheint die Verwendung von ** psycopg2 ** sicher zu sein.

Nebenbei bemerkt, im postgres-toolkit, veröffentlicht von @snaga, [PsqlWrapper.py](https: // github. Es ist eine Bibliothek implementiert, die die Standardausgabe in einer benutzerfreundlichen Form analysiert und zurückgibt, während SQL über psql unter dem Namen com / uptimejp / postgres-toolkit / blob / Develop / lib / PsqlWrapper.py ausgegeben wird. Wenn Sie ein leichtes Tool erstellen möchten, das persönlich mit PostgreSQL funktioniert, ist eine solche Implementierung möglicherweise eine Option.

Für Node.js.

Bei der Verbindung mit PostgreSQL mit Node.js wird häufig node-postgres verwendet. Dies ist eine Implementierung von Pure Javascript, sodass Sie es unten installieren können.

$ npm install pg

Darüber hinaus hat Node-Postgres auch ** pg-native **, das libpq verwendet, aber in vielen Fällen scheint es, dass es von ** pg ** verwendet wird. node-postgres gibt das Erfassungsergebnis im JSON-Format zurück.

[
    {
        "empno": "7369",
        "ename": "SMITH",
        "job": "CLERK",
        "mgr": "7902",
        "hiredate": "1980-12-17T00:00:00.000Z",
        "sal": "800.00",
        "comm": null,
        "deptno": "20"
    },
    {
        "empno": "7499",
        "ename": "ALLEN",
        "job": "SALESMAN",
        "mgr": "7698",
        "hiredate": "1981-02-20T00:00:00.000Z",
        "sal": "1600.00",
        "comm": "300.00",
        "deptno": "30"
    }
]

Das Format ist recht intuitiv, aber der JSON-Typ und der in 9.1 und höher hinzugefügte JSONB-Typ lauten ebenfalls wie folgt. Es wird als JSON zurückgegeben.

sample_db=# create table json_test(json_col json);
CREATE TABLE
sample_db=# insert into json_test values('{"A":{"B":[1,2,3]}}'::json);
INSERT 0 1
sample_db=# insert into json_test values('{"C":{"D":[4,5]}}'::json);
INSERT 0 1

[
    {
        "json_col": {
            "A": {
                "B": [
                    1,
                    2,
                    3
                ]
            }
        }
    },
    {
        "json_col": {
            "C": {
                "D": [
                    4,
                    5
                ]
            }
        }
    }
]

Wenn es um Node.js geht, ist das Backend oft MongoDB, aber PostgreSQL ist auch gut für Node.js geeignet.

Für .NET Framework

Sie können auch über .NET eine Verbindung zu PostgreSQL herstellen, indem Sie Npgsql verwenden. Sie können über Nuget herunterladen. Npgsql ist Pure C #, daher ist libpq nicht erforderlich. Das ist schön, weil es manchmal etwas umständlich ist, PostgreSQL in einer Windows-Umgebung vorzubereiten.

Da es mit ADO.NET kompatibel ist, können Sie ADO.NET ohne zu zögern verwenden, wenn Sie es mit anderen DBs verwendet haben.

Übrigens scheint Mono zu funktionieren, aber ich habe es nicht versucht ...

Für PHP

Da PostgreSQL-Funktion für PHP vorbereitet ist, werden Sie diese verwenden. Beachten Sie, dass PHP mit der Option ** —with-pgsql ** kompiliert werden muss, um es zu verwenden. Bei Verwendung über PDO ist außerdem ** —with-pdo-pgsql ** erforderlich. Da dies von libpq abhängt, muss ein Paket wie postgresql-devel separat installiert werden.

Sie können überprüfen, ob PostgreSQL über PostgreSQL-Funktionen oder PDO mit PHP verwendet werden kann, das bereits mit <? Php phpinfo ()?> Eingeführt wurde.

Sie können die Kompilierungsoptionen auch in ** php-config ** überprüfen.

Ausführungsbeispiel


$ ./php-config --configure-options
--prefix=/home/sample/apps/php ...--with-pgsql=/home/sample/posgrehome --with-pdo-pgsql=/home/sample/posgrehome 

Für Ruby

Es scheint, dass Ruby häufig das Modul ruby-pg verwendet. Dies scheint auch eine Implementierung zu sein, die libpq verwendet. Sie müssen daher ein Paket wie postgresql-devel separat installieren.

gem install pg

Wenn Sie PostgreSQL aus dem Quellcode erstellen, installieren Sie es außerdem in einem anderen Verzeichnis als gewöhnlich. Bei der Installation von ruby-pg wird es moosig. Geben Sie in diesem Fall den Pfad zu ** pg_config ** wie folgt an. (Es ist auch im Handbuch geschrieben)

gem install pg -- --with-pg-config=<path to pg_config>

schließlich

Grob gesagt habe ich die Geschichte der Verwendung von PostgreSQL aus verschiedenen Sprachen zusammengefasst. Es gibt einen vollständigen Satz von Treibern für die wichtigsten Sprachen. Wenn Sie PostgreSQL noch nicht verwendet haben, probieren Sie es einfach aus.

Die Person, die für den PostgreSQL-Adventskalender 2015, Tag 5, verantwortlich ist, ist nuko_yokohama.

Recommended Posts

Ich möchte aus verschiedenen Sprachen eine Verbindung zu PostgreSQL herstellen
Ich möchte ein Glas aus Python verwenden
Ich möchte mit Python eine E-Mail von Google Mail senden.
[Python] Ich möchte 7DaysToDie von Discord aus verwalten! 1/3
Ich möchte Passungen aus meinem Kopf machen
Ich möchte Ceres Solver aus Python verwenden
[Python] Ich möchte 7DaysToDie von Discord aus verwalten! 2/3
Ich möchte C ++ - Code aus Python-Code erstellen!
Ich möchte den Dateinamen von DataLoader sehen
Ich möchte Bilder von Katzen von Instagram erkennen
Stellen Sie mit GO eine Verbindung zu Postgresql her
Ich möchte SUDOKU lösen
Stellen Sie von Python aus eine Verbindung zu SQLite her
Ich möchte viele Prozesse von Python aus starten
Herstellen einer Verbindung zu verschiedenen DBs über Python (PEP 249) und SQL Alchemy
Ich möchte die zulässige Ausfallzeit aus der Betriebsrate berechnen
Ich möchte das Paket aus den Anforderungen.txt mit Poesie installieren
Ich möchte eine Nachricht von Python an LINE Bot senden
Ich habe versucht, verschiedene Informationen von der Codeforces-API abzurufen
Ich möchte systemd grob verstehen
Stellen Sie von Python aus eine Verbindung zur utf8mb4-Datenbank her
Ich möchte Bilder kratzen und trainieren
SSH-Verbindung von Windows zu GCP
Ich möchte ○○ mit Pandas machen
Ich möchte Yolos Anmerkung kopieren
Ich möchte mit Python debuggen
Ich möchte automatisch hochwertige Teile aus den von mir aufgenommenen Videos finden
Ich möchte eine Parameterliste aus CloudFormation-Code (yaml) erstellen.
Ich möchte mich mit der Standardsicherheitsgruppe von ALB von CDK anlegen
Ich möchte Spyder an die Taskleiste anheften
Ich möchte Objekte mit OpenCV erkennen
Stellen Sie von CentOS 7 minimal eine Verbindung zu Packetix VPN her.
Stellen Sie von Flask aus eine Verbindung zum MySQL-Container von Docker her
Ich möchte kühl auf die Konsole ausgeben
Warum ich von Java zu Dart gewechselt bin
Ich möchte Variationen in verschiedenen Statistiken finden! Empfehlung für ein Resample (Bootstrap)
Ich möchte in der Einschlussnotation drucken
Ich möchte DB mit Djangos ORM von einer externen Anwendung aus betreiben
Ich möchte sie alle zusammen kratzen.
Ich möchte mit dem Reim Teil1 umgehen
Ich möchte nur ein Signal vom Sub-Thread zum Haupt-Thread senden
Tipps zum Bearbeiten von numpy.ndarray aus c ++ - Ich möchte einen Iterator verwenden -
Ich möchte wissen, wie LINUX funktioniert!
Ich möchte einen Blog mit Jupyter Notebook schreiben
[Python-Memo] Ich möchte eine zweistellige Hexadezimalzahl aus einer Dezimalzahl erhalten
Ich möchte mit dem Reim part3 umgehen
Verwendung von Multi-Core aus der Sicht mehrerer Sprachen
Ich möchte eine Python-Umgebung erstellen
Ich möchte Linux auf dem Mac verwenden
Ich möchte eine Pip-Installation mit PythonAnywhere durchführen
Ich möchte Protokolle mit Python analysieren
Ich möchte mit aws mit Python spielen
Stellen Sie von Python aus eine Verbindung zu postgreSQL her und verwenden Sie gespeicherte Prozeduren in einer Schleife.
Ich habe einen Unit-Test für verschiedene Sprachen geschrieben
Ich möchte IPython Qt Console verwenden
Ich möchte den Fortschrittsbalken anzeigen
Ich möchte ein Automatisierungsprogramm erstellen!