MySQL表结构与python对象映射
                 jopen
                 11年前
            
                    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()