Elixir – ประมาณ Activerecord บน SQLAlchemy

จากเรื่องที่เขียนก่อนหน้านี้ก็คงจะพอเห็นว่าใช้ ​​SQLAlchemy ตรงเขียนเหนื่อยเหมือนกัน แถมเป็นท่าที่ไม่คุ้นเคย. ปกติถ้าเป็น SQLObject, Activerecord หรือแม้แต่ Hibernate เราก็จะเขียนวิธี map ลงไปใน class เลย. Elixir ก็เป็น ​layer ที่ทำงานนี้โดยไปเรียก SQLAlchemy อีกที. แต่ก่อนอาจจะเคยได้ยินชื่อ ActiveMapper และ TurboEntity อยู่บ้าง แต่เท่าที่อ่านมา คนเขียน project ที่ว่าก็มาร่วมมือกันทำ Elixir แล้ว.

ใช้  Elixir แล้วก็เริ่ม เขียน class ที่จะ map กับ database เลย

model.py:

from elixir import *metadata.connect("postgres://username@localhost/play1")

class Entry(Entity):
    has_field('id', Integer, primary_key = True)
    has_field('headword', Unicode(1024))
    has_field('xml', TEXT)

    def __repr__(self):
        return "entry " + "id=" + str(self.id) + " "
               + "headword=" + self.headword.encode("UTF-8") + " "
               + "xml=" + self.xml.encode("UTF-8")

has_field ก็คือการบอกว่า attribute ใน object จะ map ไปเป็น field อะไรใน table ของ relational database. อีกไฟล์นึงก็มาเรียกใช้เลย

from model import *
create_all()
Entry(headword="cat", xml="<entry/>")
objectstore.flush()

ก็ใช้ได้สบายๆ table ก็สร้างแล้วข้อมูลก็ insert ไปเรียบร้อย แต่ยังไม่ได้ ชื่อ table แบบที่ต้องการเพราะจะเอาไปใช้กับ database ที่มีอยู่แล้ว.

table generated from Elixir

ได้ table ออกมาชื่อ model_entity แล้วก็จะหาวิธีเปลี่ยนดู ในการเขียนครั้งหน้า.

ป้าย:

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s