version: "2"
plugins:
- name: py
wasm:
url: https://downloads.sqlc.dev/plugin/sqlc-gen-python_1.2.0.wasm
sha256: a6c5d174c407007c3717eea36ff0882744346e6ba991f92f71d6ab2895204c0e
sql:
- schema: "schema.sql"
queries: "query.sql"
engine: postgresql
codegen:
- out: src/authors
plugin: py
options:
package: authors
emit_sync_querier: true
emit_async_querier: true
Option: emit_pydantic_models
By default, sqlc-gen-python
will emit dataclasses
for the models. If you prefer to use pydantic
models, you can enable this option.
with emit_pydantic_models
from pydantic import BaseModel
class Author(pydantic.BaseModel):
id: int
name: str
without emit_pydantic_models
import dataclasses
@dataclasses.dataclass()
class Author:
id: int
name: str
Option: emit_str_enum
enum.StrEnum
was introduce in Python 3.11.
enum.StrEnum
is a subclass of str
that is also a subclass of Enum
. This allows for the use of Enum
values as strings, compared to strings, or compared to other enum.StrEnum
types.
This is convenient for type checking and validation, as well as for serialization and deserialization.
By default, sqlc-gen-python
will emit (str, enum.Enum)
for the enum classes. If you prefer to use enum.StrEnum
, you can enable this option.
with emit_str_enum
class Status(enum.StrEnum):
"""Venues can be either open or closed"""
OPEN = "op!en"
CLOSED = "clo@sed"
without emit_str_enum
(current behavior)
class Status(str, enum.Enum):
"""Venues can be either open or closed"""
OPEN = "op!en"
CLOSED = "clo@sed"