SQLAlchemy使う(2)
ちょっと進めてみた。今回はマッピングの話。既存のテーブルから自動で読み込む
以下のソースのuser,password,127.0.0.1,dbnameは適宜自分の環境に置き換えてください
model.py
#!/usr/bin/env python # -*- coding: utf-8-*- import sqlalchemy from sqlalchemy.orm import scoped_session, sessionmaker,mapper from sqlalchemy import MetaData from sqlalchemy import Column, MetaData, Table, types class Battery(object): pass def initModel(): config = {"sqlalchemy.url":"mysql://user:password@127.0.0.1/dbname"} engine = sqlalchemy.engine_from_config(config) db_session = scoped_session(sessionmaker(autoflush=True, transactional=True, bind=engine)) metadata = MetaData() battery = Table("battery",metadata, Column('id', types.Integer, primary_key=True), Column('shopname',types.Unicode(32)), Column('shopurl',types.Unicode(64)), Column('address',types.Unicode(64)), Column('mapurl',types.Unicode(64)) ) mapper(Battery,battery) metadata.create_all(bind=engine) return db_session if __name__ == "main": initModel()
これを実行。
$ python Python 2.5.2 (r252:60911, Jul 31 2008, 17:28:52) [GCC 4.2.3 (Ubuntu 4.2.3-2ubuntu7)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import model >>> session = model.initModel() >>> b = model.Battery() >>> b.shopname = u"マクド戸塚再開発店" >>> b.shopurl = u"http://example.com" >>> session.save(b) >>> session.commit()