1
ghoulr 2012-08-14 18:39:32 +08:00 1
如果没看错的话,你的三个数组是长度相等的
for i in xrange(len(imagePath)): db.update('image', vars=dict(path=imagePath[i]), where='path = $path', imageDescribe=imageDescibe[i], imageTile=imageTitle[i]) 这的参数最好是传个tuple数组吧,看起来整齐一点 |
2
muzuiget 2012-08-14 18:42:17 +08:00 1
那个循环方式错了,被第二个循环覆盖了。用索引来循环,或者用先 zip() 一下,把三个数组同索引合并。
|
4
loddit 2012-08-15 01:05:13 +08:00
你这个循环的每一个p的describe和title都被最后一个覆盖了。
如果有一个保存多个对象的方法,我会把参数设计成属性字典的队列 [{image_title:xx, image_describe:xx, image_path:xx},{...}...{...}] 不过我可能会不写这个方法,直接在controller里用这个队列做迭代,去调用 Image.save(image_title,path,) btw 这代码很不像 python 呀,读着有点晕。 imagePath => 首字母小写+驼峰命名好奇怪,一般“形参”都用小写。 class media_describe => class 反倒应该用驼峰 参考 http://www.python.org/dev/peps/pep-0008/ |
5
alsotang 2012-08-15 02:09:39 +08:00
@loddit 对的,楼主的编程规范有点问题。
web.input(image_title=[],image_describe=[],path={}) 和 def saveTitleDescribe(imagePath, imageTitle, imageDescribe) 的参数都应该加s来表示复数。 and model部分image.py 里面不应该出现saveTitleDescribes这样的方法,model的方法应该是针对个体的。所以楼主想要实现的逻辑最好是在MVC的C当中迭代实现。(毕竟楼主要解决的问题没法一次性批量操作,所以无论实现在C还是M里面,效率差不多) |
6
paloalto OP @loddit @alsotang 字典我还没用过呢(python零基础的人掩面)。我的代码都是在网上东找找西找找拼起来的,如果报错了,就去根据错误提示google,google不到就来v2ex提问啦。不过既然能解决问题,就不管是什么白猫黑猫了,先把想要的效果实现再说,以后再慢慢从基础学起。我觉得通过这种方式还是能学到不少东西的(比如怎么从mysql读最新注册的10个用户啊,什么判断用来取回密码的key有没有失效啊这些小东西都是这么学的),如果真要是一开始就抱本书跟着教程慢慢学,各种名词各种数据类型啥的,估计我很快就没兴趣了。
至于编程规范、命名方式嘛~~这个~~呃~~~挠头~~既然是自己看,唉,那就能看明白就行了~~吼吼吼~ 我现在的做法是,如果涉及到数据库的操作,通通放到M里,不过也没有那么严格啦,有的时候M里还掺杂了C的东西。这个嘛~等以后再说啦,如果以后有高手加入这个项目,就让他把网站全部重写!哈哈哈哈哈!(邪恶的笑! |