Drkcore

12 01 2010 Python pylons Tweet

Elixirをさわってみた

SQLAlchemyにかぶせてActiveRecordとして扱えるらしいElixirを試してみた。チュートリアルを一通り。

面白かったのは継承っぽくかけるとこ。こんな感じでかける。

from elixir import *

metadata.bind = "sqlite:///test.db"
#metadata.bind.echo = True

class Artist(Entity):
    using_options(inheritance='multi')
    name = Field(Unicode(60))

    def __repr__(self):
        return '<Artist "%s">' % self.name

class Technoartist(Artist):
    using_options(inheritance='multi')

    def __repr__(self):
        return '<TechnoArtist "%s">' % self.name

class Houseartist(Artist):
    using_options(inheritance='multi')

    def __repr__(self):
        return '<HouseArtist "%s">' % self.name

class Dnbartist(Artist):
    using_options(inheritance='multi')

    def __repr__(self):
        return '<Drum\'n\'BassArtist "%s">' % self.name

if __name__ == "__main__":
    from model import *
    setup_all()
    create_all()

    technasia = Technoartist(name=u"Technasia")
    louievega = Houseartist(name=u"Louie Vega")
    joeclaussell = Houseartist(name=u"Joe Claussell")
    nutone = Dnbartist(name=u"Nu Tone")
    omnitrio = Dnbartist(name=u"OmniTrio")

    session.flush()

    print "Artist.query.all()"
    print Artist.query.all()
    print "\nDnbartist.query.all()"
    print Dnbartist.query.all()

Artistを探すと、サブクラスにあたるTechnoArtist,HouseArtist,Drum'n'BassArtistが探索される

Artist.query.all()
[<TechnoArtist "Technasia">, <HouseArtist "Louie Vega">, 
<HouseArtist "Joe Claus sell">, <Drum'n'BassArtist "Nu Tone">, 
<Drum'n'BassArtist "OmniTrio">]

Dnbartist.query.all()
[<Drum'n'BassArtist "Nu Tone">, <Drum'n'BassArtist "OmniTrio">]

チュートリアルによると、この先はSQLAlchemyのドキュメント読むのがいいんじゃねーかなと書いてあったので、読んでみる。

あと、このチュートリアルだけだとusing_optionsとかが分からないのでAPI Referenceも読むべしな感じ。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021