Differences between revisions 1 and 2
Revision 1 as of 2007-03-29 13:50:15
Size: 3460
Editor: HuangYi
Comment: first example
Revision 2 as of 2007-03-29 13:52:49
Size: 4364
Editor: HuangYi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 101: Line 101:

In [9]: a = Article.select_by(title='a article')[0]
2007-03-29 21:34:58,500 INFO sqlalchemy.engine.base.Engine.0x..10 SELECT simple_
article.content AS simple_article_content, simple_article.author_id AS simple_ar
ticle_author_id, simple_article.title AS simple_article_title, simple_article.id
 AS simple_article_id
FROM simple_article
WHERE simple_article.title = ? ORDER BY simple_article.oid
2007-03-29 21:34:58,500 INFO sqlalchemy.engine.base.Engine.0x..10 ['a article']

In [10]: a.auth
a.author a.author_id

In [10]: a.author.name
2007-03-29 21:35:09,515 INFO sqlalchemy.engine.base.Engine.0x..10 SELECT simple_
user.id AS simple_user_id, simple_user.name AS simple_user_name, simple_user.ema
il AS simple_user_email
FROM simple_user
WHERE ? = simple_user.id ORDER BY simple_user.oid
2007-03-29 21:35:09,515 INFO sqlalchemy.engine.base.Engine.0x..10 [1]
Out[10]: u'guest'

Elixir Examples

Simple

simple.py

   1 from elixir import *
   2 
   3 class User(Entity):
   4     has_field('name', String(50))
   5     has_field('email', String(255))
   6     has_many('articles', of_kind='Article')
   7 
   8 class Article(Entity):
   9     has_field('title', String(200)),
  10     has_field('content', TEXT)
  11     belongs_to('author', of_kind='User')

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

In [9]: a = Article.select_by(title='a article')[0]
2007-03-29 21:34:58,500 INFO sqlalchemy.engine.base.Engine.0x..10 SELECT simple_
article.content AS simple_article_content, simple_article.author_id AS simple_ar
ticle_author_id, simple_article.title AS simple_article_title, simple_article.id
 AS simple_article_id
FROM simple_article
WHERE simple_article.title = ? ORDER BY simple_article.oid
2007-03-29 21:34:58,500 INFO sqlalchemy.engine.base.Engine.0x..10 ['a article']

In [10]: a.auth
a.author    a.author_id

In [10]: a.author.name
2007-03-29 21:35:09,515 INFO sqlalchemy.engine.base.Engine.0x..10 SELECT simple_
user.id AS simple_user_id, simple_user.name AS simple_user_name, simple_user.ema
il AS simple_user_email
FROM simple_user
WHERE ? = simple_user.id ORDER BY simple_user.oid
2007-03-29 21:35:09,515 INFO sqlalchemy.engine.base.Engine.0x..10 [1]
Out[10]: u'guest'

SQLAlchemy/ElixirExamples (last edited 2009-12-25 07:15:41 by localhost)