2011年1月26日水曜日

sqlalchemy

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
適当にはじめてみた。
#!python

import sys
print sys.version

import sqlalchemy
print sqlalchemy.__version__
#0.3.11

from sqlalchemy import create_engine
from sqlalchemy import Column, MetaData, Table, types, ForeignKey
from sqlalchemy.orm import mapper, relation

metadata = MetaData()

player = Table('player', metadata,
    Column('id', types.Integer, primary_key=True),
    Column('name', types.String(100)),
    Column('email', types.String(256))
)


match = Table('match', metadata,
    Column('id', types.Integer, primary_key=True),
    Column('venue', types.String(100)),
    Column('length', types.Integer),
    Column('player0', types.Integer, ForeignKey('player.id')),
    Column('player1', types.Integer, ForeignKey('player.id')),
    Column('result', types.Enum('0won', '1won')),
)


engine = create_engine('sqlite:///:memory', echo=True)

metadata.create_all(engine)

実行結果。
[nori@nagato]~/Desktop/work/ratingdb% python2.7 model.py
2.7.1 (r271:86832, Jan 26 2011, 22:14:26)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)]
0.6.6
2011-01-26 23:48:23,370 INFO sqlalchemy.engine.base.Engine.0x...49d0 PRAGMA table_info("player")
2011-01-26 23:48:23,370 INFO sqlalchemy.engine.base.Engine.0x...49d0 ()
2011-01-26 23:48:23,370 INFO sqlalchemy.engine.base.Engine.0x...49d0 PRAGMA table_info("match")
2011-01-26 23:48:23,370 INFO sqlalchemy.engine.base.Engine.0x...49d0 ()
2011-01-26 23:48:23,371 INFO sqlalchemy.engine.base.Engine.0x...49d0
CREATE TABLE player (
        id INTEGER NOT NULL,
        name VARCHAR(100),
        email VARCHAR(256),
        PRIMARY KEY (id)
)


2011-01-26 23:48:23,371 INFO sqlalchemy.engine.base.Engine.0x...49d0 ()
2011-01-26 23:48:23,386 INFO sqlalchemy.engine.base.Engine.0x...49d0 COMMIT
2011-01-26 23:48:23,387 INFO sqlalchemy.engine.base.Engine.0x...49d0
CREATE TABLE "match" (
        id INTEGER NOT NULL,
        venue VARCHAR(100),
        length INTEGER,
        player0 INTEGER,
        player1 INTEGER,
        result VARCHAR(4),
        PRIMARY KEY (id),
        CHECK (result IN ('0won', '1won')),
        FOREIGN KEY(player1) REFERENCES player (id),
        FOREIGN KEY(player0) REFERENCES player (id)
)


2011-01-26 23:48:23,387 INFO sqlalchemy.engine.base.Engine.0x...49d0 ()
2011-01-26 23:48:23,391 INFO sqlalchemy.engine.base.Engine.0x...49d0 COMMIT