我是靠谱客的博主 陶醉咖啡,最近开发中收集的这篇文章主要介绍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,想要看具体什么意思
经进入 [url]http://docs.sqlalchemy.org/en/rel_0_7/orm/query.html[/url]

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


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

delete()操作 同上,都有这个问题。解决方案也一样。

最后

以上就是陶醉咖啡为你收集整理的python orm框架sqlalchemy执行更新、删除时遇到的一个bug的全部内容,希望文章能够帮你解决python orm框架sqlalchemy执行更新、删除时遇到的一个bug所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部