Skip to main content

DefPixel

Define your pixels. Design your voxels.
Define your connections, Design your models, and Dive into your data in Python.

DefPixel is a Python library for defining data source connections, models, and access. Use a provided data access implementation or build your own, and work with data directly or through standard dataclasses.

Connect · model · use

  • Define your connections: storage-specific configuration and data access capabilities.
  • Design your models: storage specifications and validation rules attached to standard dataclasses.
  • Dive into your data: direct access without models, or storage and retrieval through models.

Configuration and Connection provide connection foundations. Database, KeyValue, Document, and Index Protocols describe capabilities. Modeling approaches and support vary by implementation. Validators also provide independent value validation and conversion.

Requirements and installation

Python 3.10+ is required. The base pip install DefPixel installs only the core, without implementation code.

Sqlite

Select the Sqlite implementation with the Sqlite extra. It uses Python's standard-library sqlite3. Model-based usage requires Sqlite 3.35+ as used by Python.

pip install "DefPixel[Sqlite]"

PostgreSQL

Install the PostgreSQL extra to include the implementation and PostgreSQL driver. A running PostgreSQL 15–18 server is required. This installation excludes Sqlite.

pip install "DefPixel[PostgreSQL]"

Use pip install "DefPixel[Sqlite,PostgreSQL]" for both implementations. Each extra selects a separate, same-version distribution; existing import paths are unchanged. Before migrating an older integrated installation, uninstall DefPixel and any implementation distributions, then reinstall with the required extras. Sqlite is no longer included in the base installation. Omitting an extra later does not remove an already installed implementation.

MariaDB development status

The current source provides MariaDB connections, direct SQL, sessions, native pools, dataclass mapping, types, DDL, model CRUD, SELECT-backed views, query composition, scalar/aggregate/date-time/JSON/spatial/vector functions and JSON_TABLE sources through the MariaDB implementation selection. VECTOR types/indexes and vector functions require 11.7+; MBRCoveredBy requires 12.0+; JSON_TABLE requires 10.6+. Insert returns the first RETURNING row; Update/Delete return None. Final integration and regression validation remain in progress; YEAR=0 support is deferred. No release containing this feature has been published. Source development uses python -m pip install -e . --config-settings EXTRAS=MariaDB; include other implementation names in EXTRAS to keep them selected.

Usage at a glance

Database

Sqlite

Execute SQL directly for dictionary results or map standard dataclasses to tables and retrieve objects. This complete example requires Sqlite 3.35+ as used by Python.

from dataclasses import dataclass
from DefPixel.DataAccessObject.Implements.Sqlite import (
  Configuration, Connection, column, table,
)
from DefPixel.DataAccessObject.Implements.Sqlite.Constraints import PrimaryKey
from DefPixel.DataAccessObject.Implements.Sqlite.Executors import Create, Insert, Select
from DefPixel.DataAccessObject.Implements.Sqlite.Types import Integer, Text


@table(name='users', constraints=(PrimaryKey('id'),))
@dataclass
class User:
  id: int = column(Integer())
  name: str = column(Text())


connection = Connection(Configuration(':memory:'))
connection.connect()
try:
  with connection.session() as session:
    session.run(Create(User))
    session.run(Insert(User).values(id=1, name='Alice'))

    rows = session.execute(
      'SELECT id, name FROM users WHERE id = ?', 1,
    ).rows()
    print(rows)

    users = session.run(Select(User), fetch=User)
    print(users)
finally:
  connection.close()

Output:

[{'id': 1, 'name': 'Alice'}]
[User(id=1, name='Alice')]

Sessions commit on normal completion and roll back on exceptions. Direct SQL does not require models. Models remain ordinary Python objects; attribute assignment does not automatically persist changes. No custom Model base class or Service/Repository/DTO structure is required.

PostgreSQL

PostgreSQL also supports direct SQL alongside dataclass mappings. Install the PostgreSQL extra above and adjust the connection settings for your server. Run this example in a development database: it creates and drops the defpixel_readme_users table.

from dataclasses import dataclass
from DefPixel.DataAccessObject.Implements.PostgreSQL import (
  Configuration, Connection, Create, Drop, Insert, PrimaryKey, Select, column, table,
)
from DefPixel.DataAccessObject.Implements.PostgreSQL.Types import Integer, Text


@table('defpixel_readme_users', constraints=PrimaryKey('defpixel_readme_users_pk', 'id'))
@dataclass
class User:
  id: int = column(Integer())
  name: str = column(Text())


connection = Connection(Configuration(
  host='127.0.0.1', port=5432, database='defpixel',
  username='defpixel', password='change-me-local-only',
))
connection.connect()
try:
  with connection.session() as session:
    session.run(Create(User))
    session.run(Insert(User).values(id=1, name='Alice'))

    rows = session.execute(
      'SELECT id, name FROM defpixel_readme_users WHERE id = %s', 1,
    ).rows()
    print(rows)

    users = session.run(Select(User), fetch=User)
    print(users)
    session.run(Drop(User))
finally:
  connection.close()

Output:

[{'id': 1, 'name': 'Alice'}]
[User(id=1, name='Alice')]

Direct SQL binds positional arguments with %s and keyword arguments with %(name)s. PostgreSQL constraints take a name as their first argument.

Supported implementations

  • Sqlite: direct SQL, dataclass mappings, CRUD, tables, views, constraints, indexes, joins, aggregates, and transactions. Sqlite modeling requires Sqlite 3.35+.
  • PostgreSQL: direct SQL, dataclass mappings, CRUD, schemas, sequences, tables, views, constraints, indexes, joins, aggregate/window/JSON functions, nested transactions, and connection pools. Requires PostgreSQL 15–18 and the PostgreSQL extra.

Build your own

Implement the capability Protocols for the store you need, without inheriting a provided implementation or adapting every store to SQL.

The source repository includes step-by-step implementation development guides and Sqlite and PostgreSQL user manuals.

Metadata

Release files for DefPixel-MariaDB 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for DefPixel-MariaDB 0.1.6
File Size Uploaded Provenance Actions
defpixel_mariadb-0.1.6.tar.gz 719.2 kB Without provenance Details for defpixel_mariadb-0.1.6.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for DefPixel-MariaDB 0.1.6
File Interpreter ABI Platform Actions
defpixel_mariadb-0.1.6-91-py3-none-any.whl Python 3 none any Details for defpixel_mariadb-0.1.6-91-py3-none-any.whl

Total release size: 805.3 kB

Release files / defpixel_mariadb-0.1.6.tar.gz

Download URL defpixel_mariadb-0.1.6.tar.gz
Size 719.2 kB
Tags Source
SHA-256 checksum
How to use checksums
2ad3acbcef73b5829adce4a29e1810eabcda929b286fbb9c33995e4c3e1d4f00
BLAKE2b-256 checksum
How to use checksums
e7681edc09f508aa78f90473fa68562e823ef95fdc4047fb208726f2e560629b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.18

Release files / defpixel_mariadb-0.1.6-91-py3-none-any.whl

Download URL defpixel_mariadb-0.1.6-91-py3-none-any.whl
Size 86.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dbe61a047a9c10f1b48a6a5ae6daf814cad3ef99e93f890de166a718eee5785f
BLAKE2b-256 checksum
How to use checksums
584cb79d42f0d1833182fe2f5ef3ebf43c8db4c5b867ba1da82dd07663c15d44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.18

Security for DefPixel-MariaDB 0.1.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.6 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page