Pembuatan Kode dengan generator kode model data¶
Proyek datamodel-code-generator adalah pustaka dan utilitas baris perintah untuk menghasilkan model pydantic dari hampir semua sumber data, termasuk:
- OpenAPI 3 (YAML/JSON)
- Skema JSON
- Data JSON/YAML/CSV (yang akan dikonversi ke Skema JSON)
- Kamus Python (yang akan dikonversi ke Skema JSON)
- Skema GraphQL
Kapan pun Anda menemukan JSON data yang dapat dikonversi tetapi tanpa model pydantic, alat ini akan memungkinkan Anda membuat hierarki model yang aman untuk tipe sesuai permintaan.
Instalasi¶
pip install datamodel-code-generator
Contoh¶
Dalam hal ini, datamodel-code-generator membuat model pydantic dari file Skema JSON.
datamodel-codegen --input person.json --input-file-type jsonschema --output model.py
person.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
Informasi lebih lanjut dapat ditemukan di dokumentasi resmi
本文总阅读量次