Elixir Examples
Simple
simple.py
Let's play with it in ipython:
In [1]: from simple import *
In [2]: metadata.connect('sqlite:///data.db')
In [3]: metadata.engine.echo=True
In [4]: objectstore.session.echo_uow=True
In [5]: create_all()
2007-03-29 21:28:06,875 INFO sqlalchemy.engine.base.Engine.0x..70 PRAGMA table_i
nfo(simple_user)
2007-03-29 21:28:06,875 INFO sqlalchemy.engine.base.Engine.0x..70 {}
2007-03-29 21:28:06,875 INFO sqlalchemy.engine.base.Engine.0x..70 PRAGMA table_i
nfo(simple_article)
2007-03-29 21:28:06,890 INFO sqlalchemy.engine.base.Engine.0x..70 {}
2007-03-29 21:28:06,890 INFO sqlalchemy.engine.base.Engine.0x..70
CREATE TABLE simple_user (
name VARCHAR(50),
email VARCHAR(255),
id INTEGER NOT NULL,
PRIMARY KEY (id)
)
2007-03-29 21:28:06,890 INFO sqlalchemy.engine.base.Engine.0x..70 None
2007-03-29 21:28:06,967 INFO sqlalchemy.engine.base.Engine.0x..70 COMMIT
2007-03-29 21:28:06,983 INFO sqlalchemy.engine.base.Engine.0x..70
CREATE TABLE simple_article (
title VARCHAR(200),
content TEXT,
id INTEGER NOT NULL,
author_id INTEGER,
PRIMARY KEY (id),
CONSTRAINT simple_article_author_id_fk FOREIGN KEY(author_id) REFERENCE
S simple_user (id)
)
2007-03-29 21:28:07,000 INFO sqlalchemy.engine.base.Engine.0x..70 None
2007-03-29 21:28:07,078 INFO sqlalchemy.engine.base.Engine.0x..70 COMMIT
2007-03-29 21:28:07,078 INFO sqlalchemy.engine.base.Engine.0x..70 CREATE INDEX i
x_simple_article_author_id ON simple_article (author_id)
2007-03-29 21:28:07,078 INFO sqlalchemy.engine.base.Engine.0x..70 None
2007-03-29 21:28:07,171 INFO sqlalchemy.engine.base.Engine.0x..70 COMMIT
In [6]: u = User(name='guest',email='[email protected]')
In [7]: u.articles.append(Article(title='a article',content='hahaha'))
In [8]: objectstore.session.flush()
2007-03-29 21:29:00,405 INFO sqlalchemy.orm.unitofwork.UOWTransaction.0x..30 Tas
k dump:
UOWTask(0x108b950, User/simple_user/None) (save/update phase)
|- Save User(0x10639f0)
| |- Process User(0x10639f0).articles
| |- Process Article(0x1067c70).author
|
|- UOWTask(0x108bab0, Article/simple_article/None) (save/update phase)
| |- Save Article(0x1067c70)
| |----
|
|
|- UOWTask(0x108bab0, Article/simple_article/None) (delete phase)
| |----
|
|----
2007-03-29 21:29:00,421 INFO sqlalchemy.engine.base.Engine.0x..70 BEGIN
2007-03-29 21:29:00,437 INFO sqlalchemy.engine.base.Engine.0x..70 INSERT INTO si
mple_user (name, email) VALUES (?, ?)
2007-03-29 21:29:00,437 INFO sqlalchemy.engine.base.Engine.0x..70 ['guest', 'tes
[email protected]']
2007-03-29 21:29:00,453 INFO sqlalchemy.engine.base.Engine.0x..70 INSERT INTO si
mple_article (title, content, author_id) VALUES (?, ?, ?)
2007-03-29 21:29:00,453 INFO sqlalchemy.engine.base.Engine.0x..70 ['a article',
'hahaha', 1]
2007-03-29 21:29:00,453 INFO sqlalchemy.orm.unitofwork.UOWTransaction.0x..30 Exe
cute Complete
2007-03-29 21:29:00,467 INFO sqlalchemy.engine.base.Engine.0x..70 COMMIT