热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

如何在ponyorm中创建rowcount?蟒蛇

如何解决《如何在ponyorm中创建rowcount?蟒蛇》经验,为你挑选了1个好方法。

我正在使用这个Python ORM来管理我的应用程序中的数据库:ponyorm.com

我只是在我的表中更改了一个属性,我会向我做一个rowcount,他返回1为TRUE,0为FALSE.

例如:仅使用sqlite3我会这样做:

user = conn.execute('SELECT * FROM users')

count = user.rowcount

if count == 1:
    print('Return %d lines' %count)
else:
    print('Bad....return %d lines', %count)

Alexander Ko.. 10

使用该rowcount属性通常不是计算行数的正确方法.根据关于rowcount属性的SQLite文档,

虽然sqlite3模块的Cursor类实现了这个属性,但数据库引擎自己支持确定"受影响的行"/"所选行"是很古怪的.

如果使用SQL,获取行数的标准方法是使用COUNT(*)函数.在SQLite中,它可以通过以下方式实现:

cursor = conn.cursor()
cursor.execute('SELECT COUNT(*) FROM users')
rowcount = cursor.fetchone()[0]

使用PonyORM,您可以通过三种替代方式进行计数.

rowcount = select(u for u in User).count()  # approach 1
rowcount = User.select().count()  # approach 2
rowcount = count(u for u in User)  # approach 3

上面的所有行都应该生成相同的查询.您可以选择看起来最直观的线.

如果您不想计算所有行,只计算特定行,则可以为查询添加条件.例如,要计算价格大于100的产品数量,您可以编写以下任何一行:

rowcount = select(p for p in Product if p.price > 100).count()  # approach 1
rowcount = Product.select(lambda p: p.price > 100).count()  # approach 2
rowcount = count(p for p in Product if p.price > 100)  # approach 3

此外,您可能希望不计算行数,而是计算特定列中不同值的数量.例如,不同用户国家/地区的数量.这可以通过以下方式完成:

user_countries_count = select(count(u.country) for u in User).get()

希望我回答你的问题.



1> Alexander Ko..:

使用该rowcount属性通常不是计算行数的正确方法.根据关于rowcount属性的SQLite文档,

虽然sqlite3模块的Cursor类实现了这个属性,但数据库引擎自己支持确定"受影响的行"/"所选行"是很古怪的.

如果使用SQL,获取行数的标准方法是使用COUNT(*)函数.在SQLite中,它可以通过以下方式实现:

cursor = conn.cursor()
cursor.execute('SELECT COUNT(*) FROM users')
rowcount = cursor.fetchone()[0]

使用PonyORM,您可以通过三种替代方式进行计数.

rowcount = select(u for u in User).count()  # approach 1
rowcount = User.select().count()  # approach 2
rowcount = count(u for u in User)  # approach 3

上面的所有行都应该生成相同的查询.您可以选择看起来最直观的线.

如果您不想计算所有行,只计算特定行,则可以为查询添加条件.例如,要计算价格大于100的产品数量,您可以编写以下任何一行:

rowcount = select(p for p in Product if p.price > 100).count()  # approach 1
rowcount = Product.select(lambda p: p.price > 100).count()  # approach 2
rowcount = count(p for p in Product if p.price > 100)  # approach 3

此外,您可能希望不计算行数,而是计算特定列中不同值的数量.例如,不同用户国家/地区的数量.这可以通过以下方式完成:

user_countries_count = select(count(u.country) for u in User).get()

希望我回答你的问题.


推荐阅读
  • importpymysql#一、直接连接mysql数据库'''coonpymysql.connect(host'192.168.*.*',u ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
  • 在Ubuntu系统中,由于预装了MySQL,因此无需额外安装。通过命令行登录MySQL时,可使用 `mysql -u root -p` 命令,并按提示输入密码。常见问题包括:1. 错误 1045 (28000):访问被拒绝,这通常是由于用户名或密码错误导致。为确保顺利连接,建议检查MySQL服务是否已启动,并确认用户名和密码的正确性。此外,还可以通过配置文件调整权限设置,以增强安全性。 ... [详细]
  • PHP连接MySQL的三种方法及预处理语句防止SQL注入的技术详解
    PHP连接MySQL的三种方法及预处理语句防止SQL注入的技术详解 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • MySQL Decimal 类型的最大值解析及其在数据处理中的应用艺术
    在关系型数据库中,表的设计与SQL语句的编写对性能的影响至关重要,甚至可占到90%以上。本文将重点探讨MySQL中Decimal类型的最大值及其在数据处理中的应用技巧,通过实例分析和优化建议,帮助读者深入理解并掌握这一重要知识点。 ... [详细]
  • 在处理数据库中所有用户表的彻底清除时,目前尚未发现单一命令能够实现这一目标。因此,需要采用一种较为繁琐的方法来逐个删除相关表及其结构。具体操作可以通过编写PL/SQL脚本来实现,该脚本将动态生成并执行删除表的SQL语句。尽管这种方法相对复杂,但在缺乏更简便手段的情况下,仍是一种有效的解决方案。未来或许可以通过数据库管理工具或更高版本的数据库系统提供更简洁的处理方式。 ... [详细]
  • 在将Excel数据导入MySQL数据库的过程中,如何确保不会生成重复记录?本文介绍了一种方法,通过PHP脚本检查数据库中是否存在相同的“Code”字段值,从而避免重复记录的产生。该方法不仅提高了数据导入的准确性,还增强了系统的健壮性。 ... [详细]
  • 在过去,我曾使用过自建MySQL服务器中的MyISAM和InnoDB存储引擎(也曾尝试过Memory引擎)。今年初,我开始转向阿里云的关系型数据库服务,并深入研究了其高效的压缩存储引擎TokuDB。TokuDB在数据压缩和处理大规模数据集方面表现出色,显著提升了存储效率和查询性能。通过实际应用,我发现TokuDB不仅能够有效减少存储成本,还能显著提高数据处理速度,特别适用于高并发和大数据量的场景。 ... [详细]
  • SQL Server开发技巧:修改表结构后的视图批量更新方法与实践 ... [详细]
author-avatar
林伯勋玉萍竣梅
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有