我们希望从mySQL获取自动增量ID,而不实际存储它,直到其他非mysql相关进程成功完成,以便在发生异常或应用程序崩溃时不存储该条目.我们需要使用ID作为其他进程的密钥.从本质上讲,我们希望"保留"自动增量并将行插入mySQL作为最后一步.在我们知道整个过程已成功完成之前,我们不想插入任何行.
是否有可能在mySQL中进行这种自动增量预留?
注意:我知道SQL事务.但是我们的进程包含需要在DB之外发生的非SQL内容.这些过程可能需要几分钟到几个小时.但我们不希望任何其他进程使用相同的自动增量ID.这就是为什么我们想要一个"保留"自动增量ID而不真正将任何数据插入数据库. -
我正在使用flask-restful 这是我要插入的课程
class OrderHistoryResource(Resource):
model = OrderHistoryModel
schema = OrderHistorySchema
order = OrderModel
product = ProductModel
def post(self):
value = req.get_json()
data = cls.schema(many=True).load(value)
data.insert()
Run Code Online (Sandbox Code Playgroud)
在我的模型中
def insert(self):
db.session.add(self)
db.session.commit()
Run Code Online (Sandbox Code Playgroud)
模式
from config.ma import ma
from model.orderhistory import OrderHistoryModel
class OrderHistorySchema(ma.ModelSchema):
class Meta:
model = OrderHistoryModel
include_fk = True
Run Code Online (Sandbox Code Playgroud)
我要插入的示例数据
[
{
"quantity":99,
"flaskSaleStatus":true,
"orderId":"ORDER_64a79028d1704406b6bb83b84ad8c02a_1568776516",
"proId":"PROD_9_1568779885_64a79028d1704406b6bb83b84ad8c02a"
},
{
"quantity":89,
"flaskSaleStatus":true,
"orderId":"ORDER_64a79028d1704406b6bb83b84ad8c02a_1568776516",
"proId":"PROD_9_1568779885_64a79028d1704406b6bb83b84ad8c02a"
}
]
Run Code Online (Sandbox Code Playgroud)
这是我在插入方法开始后得到的
TypeError: insert() takes exactly 2 arguments (0 given)
Run Code Online (Sandbox Code Playgroud)
或者有另一种方法来做这个动作?