ORM(Object-Relational Mapping) 对象关系映射
virtuallenv 实验环境 下载ipython
$ sudo pip install virtualenv
$ virtualenv -p /usr/bin/python3.5 env
$ source env/bin/activate
$ pip install sqlalchemy ipython mysqlclient
$ deactivate
启动ipython
$ source env/bin/activate
$ ipython
通过Engine对象连接数据库`
In [1]: from sqlalchemy import create_engine
In [2]: engine = create_engine('mysql://root:@localhost/shiyanlou')
In [3]: engine.execute('select * from user').fetchall()
基于基类创建python类,会自动映射到数据库中
In [12]: from sqlalchemy.ext.declarative import declarative_base
In [13]: Base = declarative_base()
创建 python 类 user,自动映射到 数据库shiyanlou中的user表,因为In[2]中create_engine中的地址连接到了shiyanlou,等于说use shiyanlou了.
In [19]: from sqlalchemy import Column, Integer, String
In [20]: class User(Base):
...: __tablename__ = 'user'
...: id = Column(Integer, primary_key=True)
...: name = Column(String(50))
...: email = Column(String(50))
...: def __repr__(self):
...: return "<User(name=%s)>" % self.name
...:
In [21]:
Session 是映射类和数据库沟通的桥梁,包含事务管理功能。
通过Session 操作表中数据。
先创建 Session
In [30]: from sqlalchemy.orm import sessionmaker
In [31]: Session = sessionmaker(bind=engine)
In [32]: session = Session()
通过query方法查询,还有个filter方法添加筛选条件过滤。相当于WHERE了
In [63]: session.query(User).all()
Out[63]: [<User(name=aiden)>, <User(name=lxttx)>]
In [65]: session.query(User).filter(User.name=='aiden').first()
Out[65]: <User(name=aiden)>
创建数据库表如图右半部分所示,最后写左边In [90]中的语句。然后就创建好了。