Skip to main content

A simple, type-friendly ORM.

Project description

TyDB

A simple, type-friendly Python ORM.

Features

Things one might expect of any ORM:

  • Lightweight class-based models and descriptor-based fields
  • Built-in fields for common types
  • Primary keys
  • Foreign keys with attribute accessors and joined queries
  • Separate nullable fields

Things one might not:

  • Reliable type signatures on the public API
  • Support for any DB-API 2.0 database driver
  • Synchronous and asynchronous operation under a common API

Database support

Low-level interaction with databases is handled by a DB-API Connection. This means you can work with any type of database, as long as a database driver exists that implements a DB-API interface -- Python's built-in SQLite library does so, whilst external modules are available for MySQL, PostgreSQL and others.

Whilst there's no asynchronous DB-API specification, some database drivers implement a DB-API-like interface with the same methods presented as coroutines; these are supported with asynchronous sessions, which will attempt to await results of Connection method calls if they return awaitables.

Local development

To install the library from a code checkout, including development dependencies:

$ pip install -e '.[dev]'

Docs

These can be built using pdoc, assuming you've installed the dev requirements already:

$ make docs

Unit tests

The included tests can be ran using:

$ make test

By default, this will just run generic tests, and SQLite tests against an in-memory database.

To run against MySQL or PostgreSQL, you'll need the corresponding database drivers installed from the dev dependencies. Credentials must also be provided to connect to live database servers. These should be JSON-formatted strings containing kwargs for the underlying driver connection methods. For example, to connect to servers listening locally without authentication:

$ export TYDB_MYSQL_CONN='{"db": "tydb"}'
$ export TYDB_PGSQL_CONN='{"dbname": "tydb"}'

Only synchronous session and driver tests are run by default. To enable asynchronous tests too:

$ export TYDB_ASYNC=1

The dialect-aware tests currently use the following databases and drivers:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tydb-0.1.1.tar.gz (21.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tydb-0.1.1-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file tydb-0.1.1.tar.gz.

File metadata

  • Download URL: tydb-0.1.1.tar.gz
  • Upload date:
  • Size: 21.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for tydb-0.1.1.tar.gz
Algorithm Hash digest
SHA256 92efd2a6c4b9996a09effdbba0c27e9b47b6de575eecc7108e5b7eae764289cb
MD5 09f6e64cd5c3ba83f136929b84ba9646
BLAKE2b-256 c9f685a86a7a661478dfa0c66ce16b798409ff6d71d10c4d3f416e4a02e0932c

See more details on using hashes here.

File details

Details for the file tydb-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: tydb-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for tydb-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ca98086ab03d835bb122435da87d7bb6462fd43f0a36ac380b52d336752fa95b
MD5 753db472527dc61612212ef005b46c27
BLAKE2b-256 54d3870a00d67ce76b39dc7d813e616c4415f1f9b68d0233eb9e140d414a7806

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page