目录
`SQLAlchemy`
1.简介
2.什么是`ORM`
3.开启`MySQL`的查询日志
4.`SQLAlchemy`与数据库的逻辑对应
5.连接数据库
6.创建会话`Session`
7.创建映射(`Model`)
1.`Column`的数据类型
2.`Column`列级别约束
3.表级别约束
8.单表操作
1.表的操作-增(`insert into`)
2.表的操作-删(`delete`)
3.表的操作-改(`update`)
4.表的操作-查(`select`)
1.基本查询
2.查询时的`where`子句
3.查询返回的列表(多个实例)以及标量(一个实例)
4.聚合查询
9.事务回滚
10.外键约束
11.基本关系模式
1.一对多
2.一对多双向关系
3.一对一关系
4.多对多关系-中间表无意义
5.多对多关系-中间表有意义
12.双向关系中数据的查询和添加
13.`cascade`级联
1.一对多模式中`relationship`的影响
2.`relationship`中`cascade`参数设置
14.`relationship`中使用`order_by`排序
8.单表操作
首先,我们先连接到数据库中.(为了操作方便,使用
jupiter-notebook
).
在创建之前,还是确认一下要连接的数据库中文件.
use sql_learn;show tables like 'u%';
创建连接
from sqlalchemy import create_enginefrom sqlalchemy.orm import sessionmakerfrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Column,Integer,String# 1.创建engineengine = create_engine('mysql+pymysql://root:2008.Cn123@192.168.0.101:3306/sql_learn')# 2.创建SessionSession = sessionmaker(bind=engine)# 3.实例化Sessionsession = Session()# 4.创建Model# 创建基类Base = declarative_base()# 创建映射class User(Base): __tablename__ = 'users' id = Column(Integer, nullable=False, primary_key = True) name = Column(String(45)) fullname = Column(String(45)) password = Column(String(45)) def __repr__(self): """非必须,说明""" return '.format(self.name, self.fullname, self.password)
以下是利用
session
对象的query
去增删改查数据库中的表.
1.表的操作-增(insert into
)
在前面的文章中介绍过
mysql
中表的操作(http://22j.co/cndH).现在学习使用
python
操作mysql
数据库.在
mysql
数据库中增加数据使用insert into
语句,对应到sqlalchemy
中,它使用的是session
的方法.我们先来创建表:
Base.metadata.create_all(engine)
在
mysql
中查看:mysql root@192.168.0.101:sql_learn> show tables like 'u%'; +--------------------------+| Tables_in_sql_learn (u%) |+--------------------------+| users |+--------------------------+mysql root@192.168.0.101:sql_learn> desc users;