Verwenden Sie den PostgreSQL-Datentyp (jsonb) von Python

Ich habe untersucht, wie man die für PostgreSQL typische Datenseite von Python verwendet, also werde ich sie aufzeichnen.

Hier geht es um den Typ jsonb.

Dieser Inhalt ist ein Auszug aus dem Inhalt der 51. Nagaoka IT Developer Study Group. Die Folie ist hier.

Die Java-Version ist hier.

Verwenden Sie PostgreSQL aus Python

利用方法

Wenn Sie PostgreSQL aus einer Anwendung verwenden, verwenden Sie es über die DB-API. Die DB-API hat psycopg2 als eine der Implementierungen in der Spezifikation. psycopg2 verwendet intern libpq, die offizielle PostgreSQL C-Clientbibliothek.

Quellcode

https://github.com/civic/postgresql-python-json

Verwenden Sie jsonb

id info
1 {"a": 100, "b": "Hello"}
2 {"a": 200, "b": "World"}
CREATE TABLE json_test(
  id integer,
  info jsonb
)

Verwendung von jsonb aus einer Low-Level-API (psycopg2)

SELECT

cur.execute(
"SELECT info FROM json_test WHERE id=1"
)
row = cur.fetchone()
print(row[0])
# {'b': 'Hello', 'a': 100}

Wenn Sie die JSON-Spalte erhalten, können Sie sie mit dict (Python-Wörterbuchtyp) abrufen.

INSERT (1)

from psycopg2.extras import Json

#Aktualisiert mit json Objekt
cur.execute(
  "INSERT INTO json_test(info) VALUES(%s)",
  [ 
    Json({"a":30, "b": "update"})
  ]
)

Legen Sie die Parameter im Json-Objekt fest, das von psycopg2 bereitgestellt wird. Verwenden Sie psycopg2.extras.Json. diktieren → Json.

INSERT (2)

import json

#Konvertieren Sie dict in string und übergeben Sie es an SQL
cur.execute(
  "INSERT INTO json_test(info) VALUES(jsonb(%s))",
  [
    json.dumps({"a":30, "b": "update"}) //dict→str
  ]
)

Ein Muster, das Parameter als JSON-Zeichenfolge festlegt und sie in einer SQL-Anweisung in jsonb umwandelt. In diesem Fall kann es in der DB-API-Schnittstelle verwendet werden.

Verwenden von jsonb aus einer High-Level-API (SQL Alchemy)

SELECT / INSERT

from sqlalchemy.dialects.postgresql import JSONB

class JsonTest(Base):
    __tablename__ = 'json_test'
    id = Column(Integer, primary_key=True)
    info = Column(JSONB)  #Spalten und Deklarationen vom Typ JSONB
    ...

Für SQL Alchemy, das OR-Mapper-Funktionen bietet, kann der Postgresql-Dialekt für Spaltendefinitionen verwendet werden.

Recommended Posts

Verwenden Sie den PostgreSQL-Datentyp (jsonb) von Python
[Hinweis] Mit Python Daten von PostgreSQL abrufen
Verwenden Sie thingspeak aus Python
Verwenden Sie fließend Python
Verwenden Sie MySQL aus Python
Verwenden Sie MySQL aus Python
Verwenden Sie BigQuery aus Python.
Verwenden Sie mecab-ipadic-neologd von Python
Verwenden Sie MySQL von Anaconda (Python)
Python-Datentyp-Zusammenfassungsnotiz
Konvertierung von Bilddatentypen [Python]
Verwenden Sie die e-Stat-API von Python
[Python] Verwenden Sie Daten im JSON-Format als Objekt vom Typ Wörterbuch
Python: Tags von HTML-Daten ausschließen
Verwenden Sie Stanford Core NLP von Python
Hit Schatzdaten von Python Pandas
Lesen und verwenden Sie Python-Dateien aus Python
Verwenden Sie zwangsweise Google Translate aus Python
Verwenden Sie die kabu Station® API von Python
Verwenden Sie Azure Blob Storage aus Python
Verwenden Sie die Flickr-API von Python
Verwenden Sie das von fastText trainierte Modell von Python
Verwenden Sie PostgreSQL mit Lambda (Python + psycopg2)
Verwenden Sie die Google Analytics-API von Python
Empfangen Sie Textdaten von MySQL mit Python
Python: Lesen von JSON-Daten von der Web-API
Verwenden Sie die API-Gruppe A3RT für maschinelles Lernen aus Python
Ich möchte ein Glas aus Python verwenden
Verwenden Sie die Google Cloud Vision-API von Python
[Python] Webanwendung von 0! Hands-on (4) -Datenformung-
Verwendung von "deque" für Python-Daten
Verwenden Sie Django aus einem lokalen Python-Skript
Verwenden von C ++ - Funktionen aus Python mit pybind11
Studie von Anfang an Hour6: Häufig verwendete Datentypen: Tapple-Typ, Set-Typ, Dictionary-Typ
Stellen Sie von Python aus eine Verbindung zu postgreSQL her und verwenden Sie gespeicherte Prozeduren in einer Schleife.
Holen Sie sich mit Python Zeitreihendaten von k-db.com
[Python] Verwendung von zwei Arten von type ()
Numerischer Python-Typ
Firebase: Verwenden Sie Cloud Firestore und Cloud Storage von Python
Studie aus Python Hour7: Verwendung von Klassen
Datenanalyse Python
Erste Python (Datentyp, Steueranweisung, Funktionsdefinition)
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
[Bash] Holen Sie sich die Kraft von Python aus Bash mithilfe der folgenden Dokumentation
Wickeln Sie C mit Cython für Python ein
SQL zu SQL
Verwenden Sie PIL in Python, um nur die gewünschten Daten aus Exif zu extrahieren
Verwenden Sie Python in Ihrer Umgebung von Win Automation
[Python] Fluss vom Web-Scraping zur Datenanalyse
MeCab von Python
Ich möchte Ceres Solver aus Python verwenden
Python2-Zeichenfolgentyp
Python # String-Typ
Verwenden wir verschiedene Versionen von SQLite3 aus Python3!
Wrap C ++ mit Cython zur Verwendung von Python
Verwenden Sie das nghttp2 Python-Modul von Homebrew aus pyenvs Python
Verwenden Sie Tor, um eine Verbindung von urllib2 [Python] [Mac] herzustellen.
Python: Entpacken Sie die Standardeingabe mit zipfile
[Python] Daten lesen