use*_*229 3 mysql insert web2py
我正在尝试执行检查,以便在插入记录之前查看记录是否存在,这样我就不会收到错误.如果它存在,我将更新一个字段.
mydb(mydb.myitems.itemNumber==int(row)).update(oldImageName=fileName) or
mydb.myitems.insert(itemNumber=int(row),oldImageName=fileName)
Run Code Online (Sandbox Code Playgroud)
如果我尝试更新不存在的记录,那么它应该抛出1或者除了0之外的东西.但是在上面的情况下,它总是抛出0,所以插入不断发生.
这是为什么?
谢谢!
更新:添加模型:
mydb.define_table('myitems',
Field('itemNumber', 'id',notnull=True,unique=True),
Field('oldImageName', 'string')
Run Code Online (Sandbox Code Playgroud)
如果我尝试更新不存在的记录,那么它应该从0开始抛出1或者其他东西.
如果您尝试更新不存在的记录,.update()将返回None,因此插入将发生.如果存在匹配记录,.update()则返回更新的记录数.
无论如何,你应该做:
mydb.myitems.update_or_insert(mydb.myitems.itemNumber == int(row),
oldImageName=filename)
Run Code Online (Sandbox Code Playgroud)
或者:
mydb.myitems.update_or_insert(dict(itemNumber == int(row)),
oldImageName=filename)
Run Code Online (Sandbox Code Playgroud)
update_or_insertis 的第一个参数_key,可以是DAL查询,也可以是字段名称为键的字典.