Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Postgres:在做之前测试插入或更新?_Python_Postgresql_Testing_Transactions_Rollback - Fatal编程技术网

Python Postgres:在做之前测试插入或更新?

Python Postgres:在做之前测试插入或更新?,python,postgresql,testing,transactions,rollback,Python,Postgresql,Testing,Transactions,Rollback,我们有一个表,其中只包含一个特定类型的条目,因此如果我们收到一个插入请求,我们将删除所有内容,然后执行插入。插入来自用户数据,有时会抛出错误(可能他们没有填写某些内容,等等),我们最终会得到一堆已删除的数据。我们正在处理所有的数据处理,因此不再出现类似的错误,但我想知道: 在实际执行插入或更新之前,是否有办法测试插入或更新是否有效?打开一个会话,然后以以下方式执行所有操作: 一切都将被回滚。但也有一些可能的副作用:递增的序列不会重置。无法回滚某些函数,如dblink()。普通插入或更新是安全的。

我们有一个表,其中只包含一个特定类型的条目,因此如果我们收到一个插入请求,我们将删除所有内容,然后执行插入。插入来自用户数据,有时会抛出错误(可能他们没有填写某些内容,等等),我们最终会得到一堆已删除的数据。我们正在处理所有的数据处理,因此不再出现类似的错误,但我想知道:


在实际执行插入或更新之前,是否有办法测试插入或更新是否有效?

打开一个会话,然后以以下方式执行所有操作:

一切都将被回滚。但也有一些可能的副作用:递增的序列不会重置。无法回滚某些函数,如
dblink()
。普通
插入
更新
是安全的。请注意,只要事务处于打开状态,您就可能锁定行


然而如果你使用的是有价值的数据,你不应该这样玩弄它。创建数据库副本以进行测试。

打开一个会话,然后在一个:

一切都将被回滚。但也有一些可能的副作用:递增的序列不会重置。无法回滚某些函数,如
dblink()
。普通
插入
更新
是安全的。请注意,只要事务处于打开状态,您就可能锁定行


然而如果你使用的是有价值的数据,你不应该这样玩弄它。创建数据库副本以进行测试。

打开一个会话,然后在一个:

一切都将被回滚。但也有一些可能的副作用:递增的序列不会重置。无法回滚某些函数,如
dblink()
。普通
插入
更新
是安全的。请注意,只要事务处于打开状态,您就可能锁定行


然而如果你使用的是有价值的数据,你不应该这样玩弄它。创建数据库副本以进行测试。

打开一个会话,然后在一个:

一切都将被回滚。但也有一些可能的副作用:递增的序列不会重置。无法回滚某些函数,如
dblink()
。普通
插入
更新
是安全的。请注意,只要事务处于打开状态,您就可能锁定行


然而如果你使用的是有价值的数据,你不应该这样玩弄它。创建数据库副本以进行测试。

听起来您应该使用数据库事务:错误时回滚,成功时提交。这非常完美。谢谢。听起来你应该使用数据库事务:错误回滚,成功提交。这太完美了。谢谢。听起来你应该使用数据库事务:错误回滚,成功提交。这太完美了。谢谢。听起来你应该使用数据库事务:错误回滚,成功提交。这太完美了。谢谢
BEGIN;
INSERT ...

-- check if it worked
ROLLBACK;