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

pythonsqlite3_python操作sqlite3小结

使用默认模块sqlite3使用sqlite3模块的connect方法来创建打开数据库,需要指定数据库路径,不存在则创建一个新的数据库导入模块impo

使用默认模块sqlite3

使用sqlite3模块的connect方法来创建/打开数据库,需要指定数据库路径,不存在则创建一个新的数据库

导入模块import sqlite3

建立连接con = sqlite3.connect('E:\\2018\\spider\\first.db')

不仅可以在硬盘中创建数据库文件,还可以在内存中创建con = sqlite3.connect(':memory')

不过既然在内存中创建貌似就么有必要用数据库了,莫非是装X功能?

好吧,给跪了!

connect方法返回con对象,即是数据库链接对象,它提供了以下方法:

.cursor() 方法来创建一个游标对象

.commit() 方法来处理事务提交

.rollback() 方法来处理事务回滚

.close() 方法来关闭一个数据库连接

1、游标对象的使用

对数据库的查询需要使用到游标对象,首先通过cursor()创建一个游标对象:cur = con.cursor()

游标对象有以下方法支持数据库操作:

.execute()用来执行sql语句

.executemany()用来执行多条sql语句

.close() 用来关闭游标

.fetchone()用来从结果中取一条记录,并将游标指向下一条记录

.fetchmany()用来从结果中取多条记录。

.fetchall()用来从结果中取出所以记录

.scroll()用于游标滚动

2、创建表

首先使用游标创建一个person表,包含id,name,age等3列,代码如下:cur.execute('CREATE TABLE person (id integer primary key ,name varchar(20),age integer)')

3、插入数据

向person表中插入两条数据

方法1:直接构造一个插入的sql语句data = "1,'leon',22"

cur.execute('INSERT INTO person VALUES (%s)'%data)

方法2:使用占位符“?”,规避sql注入cur.execute('INSERT INTO person VALUES (?,?,?)',(2,'name2',28))

还可以使用executemany()执行多条sql语句,使用executmany()比循环使用excute()执行多条sql语句效率高。cur.executemany('INSERT INTO person VALUES (?,?,?)',[(3,'name3',19),(4,'name4',26)])

这两种插入数据操作都不会立即生效,需要使用数据库对象con进行提交操作:con.commit()

4.查询数据

查询刚插入的所有数据cur.execute('SELECT * FROM person')

要提取查询数据,游标对象提供了fetchall()和fetchone()方法

fetchall()方法获取所有数据,返回一个二维列表。fetchone()方法获取其中一个结果,返回一个元组res = cur.fetchall()

for line in res:

print("循环fetchall的值>>>",line)

要从新取才能再次取数据哦,因为游标已经cur.execute('SELECT * FROM person')

res = cur.fetchone()

print("取一条数据>>>",res)

5、修改和删除cur.execute('UPDATE person SET name=? WHERE id=? ',('cat',2))

cur.execute('DELETE FROM person WHERE id=1')

con.commit()

再查询一下修改个删除之后的数据cur.execute('SELECT * FROM person')

res = cur.fetchall()

for line in res:

print("循环删除之后的数据>>>",line)

最后con.close() # 关闭数据库链接

输出结果:

循环fetchall的值>>> (1, ‘leon’, 22)

循环fetchall的值>>> (2, ‘name2’, 28)

循环fetchall的值>>> (3, ‘name3’, 19)

循环fetchall的值>>> (4, ‘name4’, 26)

取一条数据>>> (1, ‘leon’, 22)

循环删除之后的数据>>> (2, ‘cat’, 28)

循环删除之后的数据>>> (3, ‘name3’, 19)

循环删除之后的数据>>> (4, ‘name4’, 26)

总结:

实际上创建表操作应该检查表是否存在,可以使用异常处理try…except

更新和修改和删除都应该检查表数据是否存在,否则程序会报错。

python 操作数据库插入语句占位符问题

1,在 Python 中使用 sqlite3 连接数据库,插入语句的展位符为 “?”

cur.execute(“insert into user values(?,?,?)”,(1,name,12))

2、在 Python 中,使用 pymysql 连接 mysql 数据库,插入语句的占位符为 “%s”

cursor.execute(“insert into user values(%s, %s, %s)”,(1,name,100))



推荐阅读
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 分布式开源任务调度框架 TBSchedule 深度解析与应用实践
    本文深入解析了分布式开源任务调度框架 TBSchedule 的核心原理与应用场景,并通过实际案例详细介绍了其部署与使用方法。首先,从源码下载开始,详细阐述了 TBSchedule 的安装步骤和配置要点。接着,探讨了该框架在大规模分布式环境中的性能优化策略,以及如何通过灵活的任务调度机制提升系统效率。最后,结合具体实例,展示了 TBSchedule 在实际项目中的应用效果,为开发者提供了宝贵的实践经验。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • 触发器的稳态数量分析及其应用价值
    本文对数据库中的SQL触发器进行了稳态数量的详细分析,探讨了其在实际应用中的重要价值。通过研究触发器在不同场景下的表现,揭示了其在数据完整性和业务逻辑自动化方面的关键作用。此外,还介绍了如何在Ubuntu 22.04环境下配置和使用触发器,以及在Tomcat和SQLite等平台上的具体实现方法。 ... [详细]
  • 在将Excel数据导入MySQL数据库的过程中,如何确保不会生成重复记录?本文介绍了一种方法,通过PHP脚本检查数据库中是否存在相同的“Code”字段值,从而避免重复记录的产生。该方法不仅提高了数据导入的准确性,还增强了系统的健壮性。 ... [详细]
  • 在Java分层设计模式中,典型的三层架构(3-tier application)将业务应用细分为表现层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。这种分层结构不仅有助于提高代码的可维护性和可扩展性,还能有效分离关注点,使各层职责更加明确。通过合理的设计和实现,三层架构能够显著提升系统的整体性能和稳定性。 ... [详细]
  • 提升Android开发效率:Clean Code的最佳实践与应用
    在Android开发中,提高代码质量和开发效率是至关重要的。本文介绍了如何通过Clean Code的最佳实践来优化Android应用的开发流程。以SQLite数据库操作为例,详细探讨了如何编写高效、可维护的SQL查询语句,并将其结果封装为Java对象。通过遵循这些最佳实践,开发者可以显著提升代码的可读性和可维护性,从而加快开发速度并减少错误。 ... [详细]
  • 在过去,我曾使用过自建MySQL服务器中的MyISAM和InnoDB存储引擎(也曾尝试过Memory引擎)。今年初,我开始转向阿里云的关系型数据库服务,并深入研究了其高效的压缩存储引擎TokuDB。TokuDB在数据压缩和处理大规模数据集方面表现出色,显著提升了存储效率和查询性能。通过实际应用,我发现TokuDB不仅能够有效减少存储成本,还能显著提高数据处理速度,特别适用于高并发和大数据量的场景。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
  • Swoole加密机制的安全性分析与破解可能性探讨
    本文深入分析了Swoole框架的加密机制,探讨了其在实际应用中的安全性,并评估了潜在的破解可能性。研究结果表明,尽管Swoole的加密算法在大多数情况下能够提供有效的安全保护,但在特定场景下仍存在被攻击的风险。文章还提出了一些改进措施,以增强系统的整体安全性。 ... [详细]
  • 如何优化MySQL数据库性能以提升查询效率和系统稳定性 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • SQL Server开发技巧:修改表结构后的视图批量更新方法与实践 ... [详细]
author-avatar
我是王灿_246
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有