2012-10-10 23 views
3

如何通过sqlalchemy获取更新语句的行数? (我用的MySQL和Python /金字塔):如何获得SQL Alchemy影响的行数?

from sqlalchemy.engine.base import ResultProxy 

@classmethod 
def myupdate(cls, id, myvalue): 
    DBSession.query(cls).filter(cls.id == id).update({'mycolumn': myvalue}) 
    if ResultProxy.rowcount == 1: 
     return True 
    else: 
     return False 

注:我看到this post但根据the docs道:“‘行数’报告由一个UPDATE的WHERE条件匹配或DELETE语句的行数。 “....换句话说,它不会通过更新或删除语句返回受影响的行数

回答

1

根据the doc,您可以通过指定DBAPI的正确选项来覆盖此行为。

我没有准备好测试的mysql,但我认为在配置url中添加正确的选项(client_flagfound_rows=False,取决于所用的api)应该有所诀窍。检查相应的来源mysqlconnectoroursql欲知更多信息。

我希望这将足以帮助你。

+0

试图找出答案。我不知道我会在哪里改变这一点。我是金字塔,sqlalchemy和python的新手。 –

+0

你有一个地方的数据库的配置URL,例如'mysql + mysqlconnector:// user:passwd @ host/db''你可以像在get请求中那样在末尾添加一些参数:''mysql + mysqlconnector:// user:passwd @ host/db?found_rows = False'' – madjar

+0

我收到一个错误:“'found_rows'是这个函数的无效关键字参数None None” –