`

python orm框架sqlalchemy执行更新、删除时遇到的一个bug

阅读更多
记录一下:
2012-11-02:16:30

两个月以前,公司内部技术管理层决定废弃公司使用两年的java技术,开始使用一个全新的语言来做cms系统,这门语言就是python,python不知道你听说没有,我是第一次听说,可想而知,公司里的人基本上都处于刚入门的水平,做东西,需要慢慢来。

先介绍一下基本框架,
1.sqlalchemy
2.web.py

呵呵 第一次听说,我表示很有压力,
但是没办法,硬着头皮上吧,

由于是刚开始学,所以一定会遇到很多很多的问题,下面我会一条一条的记录下来,仅作以后学习python同学的参考。

仅此纪念我对学习python的开始。

1.sqlachemy
错误内容:
<class 'sqlalchemy.exc.ArgumentError'> : Only update via a single table query is currently supported


代码内容:
 upSeg={username:'xiaoming'}
a = aliased(TmFunccolumnDict);
            db.query(a).filter(a.app_func==app_func).update(upSeg, synchronize_session=False)


基本介绍:
这条语句是用来更新TmFunccolumnDict对象所对应的表的记录,它的app_func值为app_func。
upSeg是更新操作的参数,
updata是标识更新操作,后面的参数标识是否同步参数 ,这里是False,但是没有True的值,还有两个值 fetch、evaluate,想要看具体什么意思
经进入 http://docs.sqlalchemy.org/en/rel_0_7/orm/query.html

解决办法:
更具我的解决办法,是把alaised别名去掉
直接改为 :
db.query(TmFunccolumnDict).filter(TmFunccolumnDict.app_func==app_func).update(upSeg, synchronize_session=False)


解释:
个人认为,当取用别名的时候,sqlalchemy认为这不是一个表,而是多个表,所以提示说update操作只支持单表更新,

delete()操作 同上,都有这个问题。解决方案也一样。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics