likes
comments
collection
share

SQLAlchemy系列之新增数据、删除数据、更新数据

作者站长头像
站长
· 阅读数 31

操作前我们先来看一看test数据下的数据表情形

SQLAlchemy系列之新增数据、删除数据、更新数据

下面开始对数据表employees的数据进行操作。按照惯例先给出完整的代码,再对代码逐一进行说明。

1.新增数据

新增数据首先要创建一个会话对象,用于执行SQL语句,具体代码如下(创建数据表的内容前文已经讲述,这里不再赘述):

from sqlalchemy.orm import sessionmaker
​
​
# 创建会话session
DBsession = sessionmaker(bind=engine)
session = DBsession()
# 新增数据
new_data = Employees(name='Li Lei', sex='男', age=25, birth='1993-10-23', jobs='测试', firJob='2017-9-11', hire_date='2018-3-7')
session.add(new_data)
session.commit()
session.close()

建表新增数据后的情形:

SQLAlchemy系列之新增数据、删除数据、更新数据

引入sessionmaker模块,指明绑定已连接数据库的engine对象,生成会话对象session,该对象用于数据库的增、删、改、查等操作。一般来说,SQLAlchemy对这类操作有自身的语法支持。 另外,session.close()用于关闭会话,销毁代码中创建的数据库会话对象。 session。commit()提交事务一定要放在session.colse()之前,否则事务提交无效

2.删除数据

先来看看删除前的情形:

SQLAlchemy系列之新增数据、删除数据、更新数据

删除数据是使用SQLAlchemy的delete()方法进行实现,具体代码如下删除数据的代码如下(创建数据表的内容前文已经讲述,这里不再赘述)

from sqlalchemy.orm import sessionmaker
​
# 创建会话session
DBsession = sessionmaker(bind=engine)
session = DBsession()
# 删除数据
del_data = session.query(Employees).filter_by(id=1).delete()
print('已删除数据的数据量为:', del_data)
session.commit()
session.close()

result:

已删除数据的数据量为: 1

删除数据后数据库的情形:

SQLAlchemy系列之新增数据、删除数据、更新数据

3.更新数据

3.1 使用update()方法更新数据

更新前的情形:

SQLAlchemy系列之新增数据、删除数据、更新数据

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, DATE
from sqlalchemy.orm import sessionmaker
​
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test?charset=utf8', echo=True)
Base = declarative_base()
​
​
# 创建会话session
DBsession = sessionmaker(bind=engine)
session = DBsession()
# 新增数据
session.query(Employees).filter_by(id=1).update({Employees.age: 12})
session.commit()
session.close()

更新后的情形:

SQLAlchemy系列之新增数据、删除数据、更新数据

3.2 使用赋值方式更新数据

更新前的情形:

SQLAlchemy系列之新增数据、删除数据、更新数据

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, DATE
from sqlalchemy.orm import sessionmaker
​
engine = create_engine('mysql+pymysql://root:123456@localhost:3306/test?charset=utf8', echo=True)
Base = declarative_base()
​
# 创建会话session
DBsession = sessionmaker(bind=engine)
session = DBsession()
# 新增数据
get_data = session.query(Employees).filter_by(id=5).first()
get_data.name = '张三'
session.commit()
session.close()

更新后的情形:

SQLAlchemy系列之新增数据、删除数据、更新数据