विषय पर बढ़ें

डेटामॉडल-कोड-जनरेटर के साथ कोड जनरेशन

डेटामॉडल-कोड-जनरेटर प्रोजेक्ट किसी भी डेटा स्रोत से पाइडेंटिक मॉडल उत्पन्न करने के लिए एक लाइब्रेरी और कमांड-लाइन उपयोगिता है, जिसमें शामिल हैं:

  • ओपनएपीआई 3 (YAML/JSON)
  • JSON स्कीमा
  • JSON/YAML/CSV डेटा (जिसे JSON स्कीमा में परिवर्तित किया जाएगा)
  • पायथन डिक्शनरी (जिसे JSON स्कीमा में परिवर्तित किया जाएगा)
  • ग्राफक्यूएल स्कीमा

जब भी आप अपने आप को किसी डेटा परिवर्तनीय JSON के साथ पाते हैं, लेकिन पाइडेंटिक मॉडल के बिना, तो यह टूल आपको मांग पर टाइप-सुरक्षित मॉडल पदानुक्रम उत्पन्न करने की अनुमति देगा।

इंस्टालेशन

pip install datamodel-code-generator

उदाहरण

इस मामले में, डेटामॉडल-कोड-जनरेटर JSON स्कीमा फ़ाइल से पाइडेंटिक मॉडल बनाता है।

datamodel-codegen  --input person.json --input-file-type jsonschema --output model.py

व्यक्ति.json:

{
  "$id": "person.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "Person",
  "type": "object",
  "properties": {
    "first_name": {
      "type": "string",
      "description": "The person's first name."
    },
    "last_name": {
      "type": "string",
      "description": "The person's last name."
    },
    "age": {
      "description": "Age in years.",
      "type": "integer",
      "minimum": 0
    },
    "pets": {
      "type": "array",
      "items": [
        {
          "$ref": "#/definitions/Pet"
        }
      ]
    },
    "comment": {
      "type": "null"
    }
  },
  "required": [
      "first_name",
      "last_name"
  ],
  "definitions": {
    "Pet": {
      "properties": {
        "name": {
          "type": "string"
        },
        "age": {
          "type": "integer"
        }
      }
    }
  }
}

model.py:

# generated by datamodel-codegen:
#   filename:  person.json
#   timestamp: 2020-05-19T15:07:31+00:00
from __future__ import annotations

from typing import Any

from pydantic import BaseModel, Field, conint


class Pet(BaseModel):
    name: str | None = None
    age: int | None = None


class Person(BaseModel):
    first_name: str = Field(..., description="The person's first name.")
    last_name: str = Field(..., description="The person's last name.")
    age: conint(ge=0) | None = Field(None, description='Age in years.')
    pets: list[Pet] | None = None
    comment: Any | None = None

अधिक जानकारी आधिकारिक दस्तावेज़ पर पाई जा सकती है


本文总阅读量