SQLAlchemy 是Python中最有名的ORM框架。
装置SQLAlchemy:
$ pip install sqlalchemy
导入SQLAlchemy,并初始化DBSession:
from sqlalchemy import Column, String, create_enginefrom sqlalchemy.orm import sessionmakerfrom sqlalchemy.ext.declarative import declarative_base# 创建对象的基类:Base = declarative_base()# 定义User对象:class User(Base): # 表的名字: __tablename__ = 'user' # 表的构造: id = Column(String(20), primary_key=True) name = Column(String(20))# 初始化数据库连贯:engine = create_engine('mysql+mysqlconnector://root:root@localhost:3306/test')# 创立DBSession类型:DBSession = sessionmaker(bind=engine)
向数据库表中增加一行记录:
# 创立session对象:session = DBSession()# 创立新User对象:new_user = User(id='5', name='Bob')# 增加到session:session.add(new_user)# 提交即保留到数据库:session.commit()# 敞开session:session.close()
查问数据:
# 创立Session对象:session = DBSession()# 创立Query查问:user = session.query(User).filter(User.id=='5').one()# 打印类型和对象的name属性:print('type:', type(user))print('name:', user.name)# 敞开Session:session.close()
定义一对多关系如下:
class User(Base): __tablename__ = 'user' id = Column(String(20), primary_key=True) name = Column(String(20)) # 一对多: books = relationship('Book')class Book(Base): __tablename__ = 'book' id = Column(String(20), primary_key=True) name = Column(String(20)) # “多”的一方的是通过外键关联到user表的: user_id = Column(String(20), ForeignKey('user.id'))