Skip to main content

ORMithorynque is an ORM (Object Relational Mapper) for Python and SQLite3 with excellent performances and multiple inheritance support.

Project description

ORMithorynque is an ORM (Object Relational Mapper), that is to say an object-oriented database built on top of a relational database (SQLite3). ORMithorynque allows to save and reload Python object in a database, and to perform complex and optimized request on the database. ORMithorynque can be seen as SQLite3 with objects and (multiple) inheritance, or Python object system with SQL queries.

The key features of ORMithorynque are:

  • Very good performance thanks to prebuilt requests and agressive caching (faster than SQLAlchemy, SQLObject, Pony and Peewee)

  • Automatic database schema update when adding new tables, new columns or new indexes

  • Single and multiple inheritance support

  • Transactions

  • Native SQL queries

  • Funny name :)

And its main drawbacks are:

  • Support a single database backend (SQLite3)

  • No specific high-level query language

  • Not thread-safe

ORMithorynque is available under the GNU LGPL licence v3. It requires Python 3.2 (or more) or Pypy 3.

Installation

To install ORMithorynque, type the following command into the command prompt (with root permission):

pip install ormithorynque

What can I do with ORMithorynque?

Open an ORMithorynque database from a filename (if the database does not exist, it is automatically created):

>>> import ormithorynque

>>> database = ormithorynque.Database("database_filename.sqlite3")

Create two classes, with a one-to-many relation between them (tables are automatically created with the class if they do not exist; if they exist, they are automatically updated with new column if needed):

>>> class Person(database.Object):
...     name       = database.SQLAttribute(str, indexed = True)
...     first_name = database.SQLAttribute(str)
...     houses     = database.SQLOneToMany("House", "owner")

>>> class House(database.Object):
...     address = database.SQLAttribute("Nowhere") # String attribute with a default value
...     owner   = database.SQLAttribute(object)

Create two instances (database is automatically updated):

>>> someone = Person(name = "Some", first_name="One")

>>> house = House(address = "Somewhere", owner = someone)

The attributes of the instances can be accessed and modified (database is automatically update):

>>> someone.name
Some
>>> someone.name = "Some2"

>>> someone.houses
[<House id=2 address='Somewhere' owner=<Person id=1 first_name='One' name='Some2'>>]

Finally, plain SQL can be used to query the database:

>>> database.select_one("select count(id) from Person")
(1,)

Changelog

0.1

  • First release

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

ORMithorynque-0.1.1.tar.bz2 (341.9 kB view details)

Uploaded Source

File details

Details for the file ORMithorynque-0.1.1.tar.bz2.

File metadata

File hashes

Hashes for ORMithorynque-0.1.1.tar.bz2
Algorithm Hash digest
SHA256 feab6f89d78e4d1d0e63a494c67ea2e652691598af2bd21b720c42794133c768
MD5 76e27989e62209a860927d2fd5966171
BLAKE2b-256 c62bb567398995654371665d5f75d9bc7dbd0be41b9bc3e79c06b2948ce2cc96

See more details on using hashes here.

Supported by

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