SqlAlchemy ORM基础

sqlalchemy的 declarative_base可以很方便地将python的类对数据库的表进行映射。

 

可创建Design实例,同时可以通过session添加/查找数据库记录。上面代码的forloop中会将数据库的Design表每一条数据创建一个Design实例并打印其属性。

 

sqlalchemy的工程可以实现下面的文件结构。

 

#//-----------------------ORMClass.py----------------------------//

from sqlalchemy import *
from sqlalchemy.ext.declarative import declarative_base

engine=create_engine('sqlite:///d:/base.osu',echo=False)
metadata=MetaData(engine)

Base = declarative_base(metadata=metadata)

class Design(Base):
    __tablename__ = 'design'
    id = Column(Integer, primary_key=True,autoincrement=True)
    iconId = Column(Integer)
    surfaceId = Column(Integer)
    spaceId = Column(Integer)
    thumbnailId = Column(Integer)
ORMClass.py
#//-----------------------Main.py----------------------------------//

from sqlalchemy import *
from sqlalchemy.orm import sessionmaker
from ORMClass import Design

d1 = Design(id=133,iconId=99,surfaceId=99,spaceId=99,thumbnailId=9999)

Session = sessionmaker()
session = Session()
session.add(d1)
for instance in session.query(Design).order_by(Design.id):
    print instance.surfaceId,instance.spaceId

#session.rollback()
session.commit()
Main.py

 

执行结果应该和第一部分的代码一样。现在工程结构被分拆成两部分,第一部分ORMClass.py负责映射数据库结构,带数据库链接信息。第二部分Main.py负责执行事务,完全不带数据库连接信息。也就是说程序主体只需了解ORM class的结构,数据库结构完全透明。

 

 

posted on 2013-10-20 22:26  0x9801  阅读(616)  评论(0)    收藏  举报

导航