我正在尝试执行检查,以便在插入记录之前查看记录是否存在,这样我就不会收到错误.如果它存在,我将更新一个字段.
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) 我正在尝试使用SQLFORM.grid来显示项目的查询,并且有一个布尔字段将显示为表单上的复选框.我希望能够检查我想要移动的项目的复选框.提交时,它会对数据库进行更新,并执行将所选项目的图像文件复制到文件夹中的特殊功能.
我的SQLFORM.grid正常显示复选框,但我根本无法选中复选框.同样,我不知道我将如何拥有它,以便选定的项目将经历这两个步骤.
我甚至在SQLFORM.grid上设置了editable = True也设置了db.items.isMoved.writeable = True
以下是我的代码:
模型:
db.define_table('items',
Field('itemNumber', 'id'), Field('numSold', 'integer'),
Field('imageName', 'string'), Field('isMoved','boolean')
Field('timeStamp', 'datetime'))
Run Code Online (Sandbox Code Playgroud)
控制器:
class VirtualProfitField(object):
def profit(self):
return "$" + str(self.items.price * self.items.numSold)
db.items.virtualfields.append(VirtualProfitField())
def display_form():
default_sort_order = [ebaydb.items.numSold]
db.items.timeStamp.readable = False
db.items.imageName.readable = False
query = (db.items.numSold > 100)
default_sort_order = [db.items.numSold]
form = SQLFORM.grid(query=query, orderby=default_sort_order, create=True,
deletable=True, editable=True, maxtextlength=64, paginate=25, csv=False,
links=[dict(header=T('Profit'),body=lambda row: row.profit),
dict(header=T('Image'),
body = lambda rowB: A(IMG(_src=URL('static', "images/images/"+
rowB.imageName.replace('\\','/')), _width=50, _height=50), _href=URL('static',
"images/images/"+ rowB.imageName.replace('\\','/'))))]
if len(request.args) > 1 …Run Code Online (Sandbox Code Playgroud) 当我有以下查询:
str(db(db.items.id==int(row)).select(db.items.imageName)) + "\n"
Run Code Online (Sandbox Code Playgroud)
输出包括字段名称:
items.imageName
homegear\homegear.jpg
Run Code Online (Sandbox Code Playgroud)
如何删除它,以便不包括字段名称,只包括所选的图像名称.
我尝试引用它像列表[1]给我一个超出范围的错误和[0]我最终得到:
<Row {'imageName': 'homegear\\homegear.jpg'}>
Run Code Online (Sandbox Code Playgroud)
以上不是列表,那是什么对象,我该如何参考呢?
谢谢!
约翰