Axiom is an object database whose primary goal is to provide an object-oriented layer with what we consider to be the key aspects of OO, i.e. polymorphism and message dispatch, without hindering the power of an RDBMS. It is designed to ‘feel Pythonic’, without encouraging the typical ORM behavior such as Potato Programming.
Axiom provides a full interface to the database, which strongly suggests that you do not write any SQL of your own. Metaprogramming is difficult and dangerous (as many, many SQL injection attacks amply demonstrate). Writing your own SQL is still possible, however, and Axiom does have several methods which return fragments of generated schema if you wish to use them in your own queries.
Axiom currently supports only SQLite and does NOT have any features for dealing with concurrency. We do plan to add some later, and perhaps also support other databases in the future. Take a look at Concurrency and Scalability for more information - we’ll update this as the community makes progress on these issues.
How does Axiom perform?
Here are some simple third-party benchmarks.
- Stable: Download the latest release - 0.6.0! (Requires Divmod Epsilon) (Release Notes)
- Trunk: svn co http://divmod.org/svn/Divmod/trunk/Axiom Axiom
- Axiom Tutorial: Short, sharp Axiom/Mantissa tips and tricks.
- Why use Axiom?: Glyph writes about the advantages of Axiom over other RDBMS and ORM alternatives.
- Reference: A reference to the Axiom public API. (Incomplete but evolving!)
- Development version of the Axiom API docs
- Axiom tickets
- Transition mini-HOWTO: How to transition from pre-
- WritingUpgradeTests: writing stubloader tests for schema upgrades.
- Concurrency and Scalability
- Axiom Tutorial
- Why use Axiom?
- Examples : Shop
- Transition mini-HOWTO
- So You Want To Change Your Schema
- Dynamic Typing