macaron icon indicating copy to clipboard operation
macaron copied to clipboard

A simple O/R mapper for SQLite

.. _Python: http://python.org/ .. _SQLite: http://www.sqlite.org/ .. _Bottle: http://bottlepy.org/

===================== Macaron: O/R Mapper

Overview

Macaron is a small and simple object-relational mapper (ORM) for SQLite_ and Python_. It is distributed as a single file module which has no dependencies other than the Python Standard Library <http://docs.python.org/library/>_.

Macaron provides easy access methods to SQLite database. And it supports Bottle_ web framework through plugin mechanism.

Example::

>>> import macaron
>>> # You need to have initialized your model before; see tutorial
>>> macaron.macaronage(dbfile="members.db")
>>> team = Team.create(name="Houkago Tea Time")
>>> team.members.append(first_name="Ritsu", last_name="Tainaka", part="Dr")
<Member object 1>
>>> mio = team.members.append(first_name="Mio", last_name="Akiyama", part="Ba")
>>> print mio
<Member 'Mio Akiyama : Ba'>
>>> for member in team.members: print member
...
<Member 'Ritsu Tainaka : Dr'>
<Member 'Mio Akiyama : Ba'>

Macaron supports Many-To-One and Many-To-Many (new in 0.4.0-dev) relationships and reverse reference. To realize simple implementation, Macaron does not provide methods for creation of tables.

MacaronPlugin class for Bottle_ web framework is implemented.

External resources

  • Homepage and documentation: http://nobrin.github.com/macaron/

    • Documentation in Japanese: http://biokids.org/?Macaron
  • Python Package Index (PyPI): http://pypi.python.org/pypi/macaron

  • GitHub: https://github.com/nobrin/macaron

Installation and Dependencies

::

tar zxvf macaron-0.3.0.tar.gz
cd macaron-0.3.0
python setup.py

or using easy_install::

easy_install macaron

Use for Web Applications

Macaron in the Bottle

Bottle_ is a lightweight web framework for Python. Macaron can be used with Bottle through :class:MacaronPlugin, which is tested with Bottle 0.10.9.

Example

::

#!/usr/bin/env python
from bottle import *
import macaron

install(macaron.MacaronPlugin("address.db"))

class Address(macaron.Model):
    _table_name = "address"

@route("/hello")
def index():
    addr = Address.get(1)
    return "<h1>Hello!!</h1>My address is %s" % addr.address

run(host="localhost", port=8080)

Implementation

:class:MacaronPlugin create lazy connection. So the :class:sqlite3.Connection object is create at call Macaron methods. In case of no use the methods in :meth:bottle.route, any connection is created.