Python Dataclasses
python
Generate Python @dataclass classes from SQL schema
Example Output
Generated from the pet-store sample schema:
python
# Generated by @sqldoc/templates/python-dataclasses -- DO NOT EDIT
from dataclasses import dataclass
from typing import Optional
from datetime import date
from datetime import datetime
from decimal import Decimal
@dataclass
class Adoption:
id: int
pet_id: int
owner_id: int
adopted_at: datetime
adoption_fee: Decimal
@dataclass
class AdoptionsAuditLog:
id: int
table_name: str
operation: str
changed_at: datetime
old_data: Optional[dict] = None
new_data: Optional[dict] = None
@dataclass
class Category:
id: int
name: str
description: Optional[str] = None
@dataclass
class LegacyInventory:
id: int
item_name: Optional[str] = None
old_sku: Optional[str] = None
quantity: Optional[int] = None
@dataclass
class Location:
id: int
name: str
address: str
city: str
zip: Optional[str] = None
@dataclass
class MedicalRecord:
id: int
pet_id: int
visit_date: date
diagnosis: str
treatment: Optional[str] = None
vet_name: Optional[str] = None
@dataclass
class Owner:
id: int
name: str
email: str
phone: Optional[str] = None
created_at: Optional[datetime] = None
@dataclass
class Pet:
id: int
name: str
sku: str
price: Decimal
status: str
category_id: Optional[int] = None
internal_notes: Optional[str] = None
created_at: Optional[datetime] = None
@dataclass
class Review:
id: int
pet_id: int
owner_id: int
rating: int
body: Optional[str] = None
location_id: Optional[int] = None
created_at: Optional[datetime] = None
@dataclass
class StaffAuditLog:
id: int
table_name: str
operation: str
changed_at: datetime
old_data: Optional[dict] = None
new_data: Optional[dict] = NoneUsage
Add to your sqldoc.config.ts:
typescript
export default {
dialect: 'postgres',
schema: ['./schema.sql'],
codegen: [
{
template: 'python-dataclasses',
output: './generated/models.py',
},
],
}Then run:
bash
sqldoc codegen