python sqlite3 查询数据结果

本文记录了作者在使用Python的sqlite3模块时遇到的一个关于rowcount属性总是返回-1的问题。通过尝试不同的方法,作者发现了一种统计查询结果数量的替代方案,并分享了自己的解决思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       今天学习了python的数据库基本操作, 主要使用sqlite3模块,但是结果在计算rowcount的时候,总是为-1,google了一下,也没找到合适的答案。

       所以用了一个笨办法来统计实际的数量,结果让我大吃一惊:

运行结果

最上面的结果,是直接fetchall后的输出,比较混乱

但是分行显示时,计数的最终结果是110,即每个字段的数据是一个值(我把计数器放在line里面了,如果放在外面,则可以获得正确的行数)

通过这个结果,我发现我们可以很方便的使用python对数据库中的每个值进行统计查询,的确很方便,但是是rowcount的结果我依然没有找到。所以自己mark一下,希望有机会能够来回答自己的问题!

转载于:https://my.oschina.net/microcq/blog/40028

### 使用 Pythonsqlite3 模块插入数据Python 中,`sqlite3` 是用于操作 SQLite 数据库的标准库之一。它提供了简单而强大的 API 来管理轻量级的关系型数据库。下面详细介绍如何利用 `sqlite3` 插入数据SQLite 表中。 #### 创建连接并初始化表结构 首先需要建立与 SQLite 数据库文件的连接,并创建一个游标对象以便执行 SQL 命令。如果指定路径下不存在该数据库,则会自动新建。 ```python import sqlite3 # 连接到SQLite数据库(如果不存在则会被创建) conn = sqlite3.connect('example.db') cur = conn.cursor() # 如果还没有相应的表格, 则先创建之. create_table_sql = """ CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INT); """ cur.execute(create_table_sql) ``` 这段脚本设置了名为 `users` 的新表,其中包含三个字段:唯一标识符 (`id`)、姓名 (`name`) 和年龄 (`age`)。 #### 执行 INSERT INTO 语句插入单条记录 接着展示怎样向这个刚建好的表里加入一条新的用户信息。 ```python insert_user_sql = "INSERT INTO users (name, age) VALUES (?, ?)" data_tuple = ('Alice', 30) try: cur.execute(insert_user_sql, data_tuple) conn.commit() print("User inserted successfully!") except sqlite3.Error as e: print(f"An error occurred while inserting user: {e}") finally: pass ``` 此代码片段演示了参数化查询的重要性——通过占位符(`?`)代替实际值传参的方式有效防止SQL注入攻击[^1]。 #### 同时插入多条记录 当有多个实体待存入库时,可借助 executemany 方法一次性完成多项写入动作。 ```python many_users_data = [ ('Bob', 25), ('Charlie', 22), ] cur.executemany(insert_user_sql, many_users_data) conn.commit() print("{} rows were inserted.".format(len(many_users_data))) ``` 以上例子说明了批量加载技术的应用场景及其优势所在;即减少网络往返次数从而提高性能表现[^1]. 最后别忘了关闭资源释放锁。 ```python cur.close() conn.close() ``` --- ### 总结 上述示例涵盖了从基础设置直到高级技巧在内的全过程指导,帮助开发者快速掌握如何运用 python 内置工具包 - sqlite3 实现对本地小型关系型存储系统的增删改查等功能需求.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值