SQLAlchemy 简易使用教程

作者: 王炳明 分类: Python 基础教程 发布时间: 2021-02-24 20:10 热度:2,039

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()

文章有帮助,请作者喝杯咖啡?

发表评论