Utiliser le type de données PostgreSQL (jsonb) à partir de Python

J'ai étudié comment utiliser le côté données propre à PostgreSQL à partir de Python, je vais donc l'enregistrer.

Il s'agit du type jsonb.

Ce contenu est un extrait du contenu présenté au 51e Nagaoka IT Developer Study Group. La diapositive est ici.

La version Java est ici.

Utiliser PostgreSQL depuis Python

利用方法

Lorsque vous utilisez PostgreSQL à partir d'une application, utilisez-le via l'API DB. L'API DB a psycopg2 comme l'une des implémentations de la spécification. psycopg2 utilise en interne libpq, la bibliothèque client officielle de PostgreSQL C.

Code source

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

Utilisez jsonb

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

Utilisation de jsonb depuis l'API de bas niveau (psycopg2)

SELECT

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

Si vous obtenez la colonne json, vous pouvez l'obtenir avec dict (type de dictionnaire Python).

INSERT (1)

from psycopg2.extras import Json

#Mis à jour avec un objet json
cur.execute(
  "INSERT INTO json_test(info) VALUES(%s)",
  [ 
    Json({"a":30, "b": "update"})
  ]
)

Définissez les paramètres dans l'objet Json fourni par psycopg2. Utilisez psycopg2.extras.Json. dict → Json.

INSERT (2)

import json

#Convertir dict en chaîne et le transmettre à SQL
cur.execute(
  "INSERT INTO json_test(info) VALUES(jsonb(%s))",
  [
    json.dumps({"a":30, "b": "update"}) //dict→str
  ]
)

Un modèle qui définit les paramètres sous forme de chaîne JSON et les convertit en jsonb dans une instruction SQL. Dans ce cas, il peut être utilisé dans l'interface de l'API DB.

Utilisation de jsonb depuis une API de haut niveau (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)  #Colonnes et déclarations de type JSONB
    ...

Pour SQL Alchemy, qui fournit la fonctionnalité de mappeur OR, le dialecte postgresql peut être utilisé pour les définitions de colonne.

Recommended Posts

Utiliser le type de données PostgreSQL (jsonb) à partir de Python
[Note] Obtenir des données de PostgreSQL avec Python
Utilisez Thingsspeak de Python
Utiliser fluentd de python
Utilisez MySQL depuis Python
Utiliser MySQL depuis Python
Utilisez BigQuery depuis Python.
Utilisez mecab-ipadic-neologd de Python
Utiliser MySQL depuis Anaconda (python)
Mémo récapitulatif des types de données Python
Conversion de type de données d'image [Python]
Utilisez l'API e-Stat de Python
[Python] Utiliser les données au format JSON comme objet de type dictionnaire
Python: exclure les balises des données html
Utiliser la PNL Stanford Core à partir de Python
Frappez les données du trésor de Python Pandas
Obtenir des données de Quandl en Python
Lire et utiliser des fichiers Python à partir de Python
Utiliser de force Google Translate à partir de python
Utilisez l'API kabu Station® de Python
Utiliser Azure Blob Storage à partir de Python
Utilisez l'API Flickr de Python
Utiliser le modèle entraîné fastText de Python
Utiliser PostgreSQL avec Lambda (Python + psycopg2)
Utiliser l'API Google Analytics de Python
Recevoir des données textuelles de mysql avec python
Python: lecture de données JSON à partir de l'API Web
Utiliser le groupe d'API d'apprentissage automatique A3RT de Python
Je veux utiliser jar de python
Utiliser l'API Google Cloud Vision de Python
[Python] Application Web à partir de 0! Pratique (4) - Mise en forme des données-
Comment utiliser "deque" pour les données Python
Utiliser Django à partir d'un script Python local
Utilisation des fonctions C ++ de python avec pybind11
Etude depuis le début Heure 6: types de données fréquemment utilisés: type de tapple, type de set, type de dictionnaire
Connectez-vous à postgreSQL depuis Python et utilisez des procédures stockées dans une boucle.
Obtenez des données de séries chronologiques de k-db.com avec Python
[Python] Comment utiliser deux types de type ()
Type numérique Python
Firebase: utilisez Cloud Firestore et Cloud Storage depuis Python
Étude de Python Hour7: Comment utiliser les classes
Analyse de données python
Premier python (type de données, instruction de contrôle, définition de fonction)
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
[Bash] Obtenez la puissance de python de bash en utilisant la documentation ici
Envelopper C avec Cython pour une utilisation à partir de Python
sql à sql
Utilisez PIL en Python pour extraire uniquement les données souhaitées d'Exif
Utilisez Python dans votre environnement depuis Win Automation
[Python] Flux du scraping Web à l'analyse des données
MeCab de Python
Je veux utiliser le solveur ceres de python
Type de chaîne Python2
Python # type de chaîne
Utilisons différentes versions de SQLite3 de Python3!
Envelopper C ++ avec Cython pour une utilisation à partir de Python
Utilisez le module Python nghttp2 de Homebrew de Python de pyenv
Utilisez Tor pour vous connecter depuis urllib2 [Python] [Mac]
Python: décompressez depuis l'entrée standard en utilisant zipfile
[python] Lecture de données