# sqlalchemy_factory

class polyfactory.factories.sqlalchemy_factory.SQLASyncPersistence

  Bases: `SyncPersistenceProtocol`[`T`]

  __init__(session: Session) → None

    Sync persistence handler for SQLAFactory.

  save(data: T) → T

    Persist a single instance synchronously.

    Parameters:

      data – A single instance to persist.

    Returns:

      The persisted result.

  save_many(data: list[T]) → list[T]

    Persist multiple instances synchronously.

    Parameters:

      data – A list of instances to persist.

    Returns:

      The persisted result

class polyfactory.factories.sqlalchemy_factory.SQLAASyncPersistence

  Bases: `AsyncPersistenceProtocol`[`T`]

  __init__(session: AsyncSession) → None

    Async persistence handler for SQLAFactory.

  async save(data: T) → T

    Persist a single instance asynchronously.

    Parameters:

      data – A single instance to persist.

    Returns:

      The persisted result.

  async save_many(data: list[T]) → list[T]

    Persist multiple instances asynchronously.

    Parameters:

      data – A list of instances to persist.

    Returns:

      The persisted result

class polyfactory.factories.sqlalchemy_factory.SQLAlchemyFactory

  Bases: `Generic`[`T`], `BaseFactory`[`T`]

  Base factory for SQLAlchemy models.

  __is_base_factory__: bool = True

    Flag dictating whether the factory is a ‘base’ factory. Base factories are registered globally as handlers for types. For example, the ‘DataclassFactory’, ‘TypedDictFactory’ and ‘ModelFactory’ are all base factories.

  __set_primary_key__: ClassVar[bool] = True

    Configuration to consider primary key columns as a field or not.

  __set_foreign_keys__: ClassVar[bool] = True

    Configuration to consider columns with foreign keys as a field or not.

  __set_relationships__: ClassVar[bool] = False

    Configuration to consider relationships property as a model field or not.

  __config_keys__: tuple[str, ...] = ('__check_model__', '__allow_none_optionals__', '__set_as_default_factory_for_type__', '__faker__', '__random__', '__randomize_collection_length__', '__min_collection_length__', '__max_collection_length__', '__use_defaults__', '__set_primary_key__', '__set_foreign_keys__', '__set_relationships__')

    Keys to be considered as config values to pass on to dynamically created factories.

  classmethod get_sqlalchemy_types() → dict[Any, Callable[[], Any]]

    Get mapping of types where column type should be used directly.

    For sqlalchemy dialect JSON type, accepted only basic types in pydict in case sqlalchemy process JSON raise serialize error.

  classmethod get_sqlalchemy_constraints() → dict[type[TypeEngine], dict[str, str]]

    Get mapping of SQLA type engine to attribute to constraints key.

  classmethod get_provider_map() → dict[Any, Callable[[], Any]]

    Map types to callables.

    Notes:

      - This method is distinct to allow overriding.

    Returns:

      a dictionary mapping types to callables.

  classmethod is_supported_type(value: Any) → TypeGuard[type[T]]

    Determine whether the given value is supported by the factory.

    Parameters:

      value – An arbitrary value.

    Returns:

      A typeguard

  classmethod get_model_fields() → list[FieldMeta]

    Retrieve a list of fields from the factory’s model.

    Returns:

      A list of field MetaData instances.