ORM
mysql的表结构是二维表,用python的数据结构表示出来就是一个列表,每一个记录是一个tuple。如下所示:
[(\’1\’, \’\’huangyi),(\’2\’, \’\’letian),(\’3\’, \’xiaosi\’)]
这一行并不便于看出表的结构,可以把它换成对象的形式。
class User(object): def __init__(self, id, name): self.id = id self.name = name
得到:
[ User(\'1\', \'huangyi\'), User(\'2\', \'letian\'), User(\'3\', \'xiaosi\') ]
这就是ORM(Object-relational Mapping),把关系数据库的表结构映射到对象上。我们可以用SQLAlchemy框架来进行映射。
SQLAlchemy
#!/usr/bin/env python #-*-coding:utf-8 -*- from sqlalchemy import Column, String, create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class User(Base): __tablename__ = \'user\' id = Column(String(20), primary_key=True) name = Column(String(20)) engine = create_engine(\'mysql+mysqlconnector://root:XXXXX@localhost:3306/TUZHI\') DBSession = sessionmaker(bind=engine) session = DBSession() new_user = User(id=\'4\', name=\'Huangyi\') session.add(new_user) session.commit() #session.close() ##进行查询 #session = DBSession() user = session.query(User).filter(User.id==\'4\').one() print \'type:\', type(user) print \'name:\', user.name session.close()