SQL_Alchemy学习笔记

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]中的语句。然后就创建好了。
在这里插入图片描述

发布了26 篇原创文章 · 获赞 6 · 访问量 6469

猜你喜欢

转载自blog.csdn.net/weixin_43975128/article/details/90319069