ページ

2013年3月20日水曜日

SQLAlchemy+SQLiteでのAuto Increment

SQLAlchemy+SQLiteでAutoIncrementを使うときは、単にPrimaryKeyに値を入れずにcommitすれば良い。


from sqlalchemy import Column, Integer, String, Table, create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine('sqlite:///test.db', echo=True)
Base = declarative_base(bind=engine) 
 
class MyClass(Base):
    __tablename__ = 'my_table'
    id = Column(Integer, primary_key=True)
    type = Column(String(50))
    alt = Column("some_alt", Integer)

if __name__ == '__main__':

    Session = sessionmaker(bind=engine)
    session = Session()
    Base.metadata.create_all(engine)
 
    myclass = MyClass()
    myclass.type = "taiga"
    myclass.alt = 10
    
    session.add(myclass)
    session.commit()
上のプログラムではid(primary key)に何の値も入れずにcommitしているが、フレームワーク側でprimary keyをincrementしてくれる。

0 件のコメント:

コメントを投稿