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)
#//-----------------------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()
执行结果应该和第一部分的代码一样。现在工程结构被分拆成两部分,第一部分ORMClass.py负责映射数据库结构,带数据库链接信息。第二部分Main.py负责执行事务,完全不带数据库连接信息。也就是说程序主体只需了解ORM class的结构,数据库结构完全透明。
浙公网安备 33010602011771号