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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
92efd2a6c4b9996a09effdbba0c27e9b47b6de575eecc7108e5b7eae764289cb
|
|
| MD5 |
09f6e64cd5c3ba83f136929b84ba9646
|
|
| BLAKE2b-256 |
c9f685a86a7a661478dfa0c66ce16b798409ff6d71d10c4d3f416e4a02e0932c
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca98086ab03d835bb122435da87d7bb6462fd43f0a36ac380b52d336752fa95b
|
|
| MD5 |
753db472527dc61612212ef005b46c27
|
|
| BLAKE2b-256 |
54d3870a00d67ce76b39dc7d813e616c4415f1f9b68d0233eb9e140d414a7806
|