【问题标题】:How do I get the number of rows affected with SQL Alchemy?如何获取受 SQL Alchemy 影响的行数?
【发布时间】:2012-10-01 09:45:55
【问题描述】:

如何使用 sqlalchemy 获取更新语句受影响的行数? (我正在使用 mysql 和 python/pyramid):

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:“'rowcount' 报告与 UPDATE 或 DELETE 语句的 WHERE 条件匹配的行数。”....换句话说,它没有'不返回更新或删除语句影响的行数。

【问题讨论】:

    标签: python mysql sqlalchemy pyramid flask-sqlalchemy


    【解决方案1】:

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

    我没有准备好测试的 mysql,但我认为将正确的选项(client_flagfound_rows=False,取决于使用的 api)添加到配置 url 应该可以解决问题。查看mysqlconnectoroursql 的相应来源以获取更多信息。

    我希望这足以帮助你。

    【讨论】:

    • 试图弄清楚。我不知道我会在哪里改变它。我是金字塔、sqlalchemy 和 python 的新手。
    • 你在某个地方有一个数据库的配置 url,类似于 mysql+mysqlconnector://user:passwd@host/db 你可以像在 get 请求中一样在末尾添加一些参数:mysql+mysqlconnector://user:passwd@host/db?found_rows=False
    • 我收到一个错误:“'found_rows' 是此函数的无效关键字参数 无 无”
    • 哦,对不起,我好像把这两个弄混了。你可以试试mysql+oursql://user:passwd@host/db?found_rows=False 吗?
    • 补充说,但是我们的sql 的添加使任何查询变得缓慢。我尝试测试它,但对缓慢感到沮丧。设置 found_rows=False 似乎不起作用
    猜你喜欢
    • 1970-01-01
    • 2015-08-06
    • 2011-10-28
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 2019-02-19
    • 1970-01-01
    相关资源
    最近更新 更多