SQLAlchemy 简易使用教程
1. 依赖安装
正常来说,你除了要安装 SQLAlchemy 之外,还要安装一个驱动库,我这使用的是 pymysql
$ pip3 install sqlalchemy pymysql
2. 创建表
首先要通过 SQLAlchemy 的内置方法 declarative_base() 创建一个基础类 Base,然后自定义一个继承自 Base 类的子类,一个类就是一张表。
import toml
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
# 定义字段
id = Column(Integer, primary_key=True)
name = Column(String(255))
age = Column(Integer)
定义好后,就可以创建它
# 数据库配置我使用的是 toml 文件
cfg_dict = toml.load("/etc/werobot/werobot.toml")
mysql_config = cfg_dict["mysql"]
mysql_uri = 'mysql+pymysql://{user}:{password}@{host}:{port}/{database}'.format(**mysql_config)
engine = create_engine(mysql_uri, encoding="utf-8", echo=True)
session = DBsession()
# 创建表结构
# checkfirst:判断表是否存在,如果存在,就不重复创建
Base.metadata.create_all(engine, checkfirst=True)
# 实例化会话
session = sessionmaker(bind=engine)()
3. 新增数据
新增数据,可以单条插入,也可以批量插入
# 单条插入
u1 = User(name="Chan", age=19)
session.add(u1)
# 批量插入
u1 = User(name="Tom", age=20)
u2 = User(name="Jack", age=17)
u3 = User(name="Tony", age=22)
session.add_all(u1, u2, u3)
# 提交事务,写入数据库
session.commit()
一定要注意的是,调用完 add 或者 add_all 函数后,一定要执行 session.commit()
提交事务,这样才算是将数据写入数据库。
4. 查询数据
查询数据,使用的是 query 方法
# 返回所有数据
session.query(User).all()
# 查询满足条件的所有数据
session.query(User).filter_by(name="Tony").all()
# 查询满足条件的首条数据
session.query(User).filter_by(name="Tony").first()
如果是使用 all 则返回的是一个列表,每个元素都是 User 对象。
5. 更新数据
更新数据,是先查询出来再调用 update 函数
tony = session.query(User).filter_by(name="Tony").first()
tony.update({"name": 23})
# 也可以直接改
# tony.name = 23
# 记得要提交事务
session.commit()
5. 删除数据
删除数据,也是一样,先查询出来再调用 delete 函数
tony = session.query(User).filter_by(name="Tony").first()
tony.delete()
# 记得要提交事务
session.commit()