小编bra*_*nks的帖子

SQLAlchemy仍然能够在删除后从会话中获取对象

我有一个端点从我的数据库中删除一个对象.我用以下代码删除它:

my_object = Object.query.get(id)
db.session.delete(my_object)
db.session.commit()
return json.dumps({'success': True}
Run Code Online (Sandbox Code Playgroud)

我有一个API测试来测试我创建对象的端点,然后使用端点将其删除.我试图断言删除后发生它不在数据库中.

my_object = MyObject()
db.session.add(my_object)
db.session.commit()
response = requests.delete('{}/my-object/{}'.format(
    os.environ.get('MY_URL'),
    my_object.id
))
self.assertTrue(response.json()['success']) // this passes
self.assertEqual(200, response.status_code) // this passes
result = db.session.query(MyObject).get(my_object.id)
print(result.id) // prints the id of the job even though it is deleted from the database
Run Code Online (Sandbox Code Playgroud)

我认为这与一些SQLAlchemy会话缓存有关.我试过了db.session.flush(),但db.session.expire_all()没有用.该对象实际上正在从数据库中删除.所以我希望查询结果是None.

我在文档中看到了这一点,但没有完全包裹我的脑袋.何时提交和关闭会话

谢谢你的帮助.

python sqlalchemy flask

0
推荐指数
1
解决办法
3576
查看次数

标签 统计

flask ×1

python ×1

sqlalchemy ×1