Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】

作者:微烟波 时间:2024-01-19 09:29:00 

本文实例讲述了Python操作SQLite数据库的方法。分享给大家供大家参考,具体如下:

SQLite简介

SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起MySQL、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2015年已经有15个年头,SQLite也迎来了一个版本 SQLite 3已经发布。

SQLite数据库的使用

1.导入Python SQLite数据库模块

python2.5版本以后内置SQLite数据库


import sqlite3

2. 创建/打开数据库

调用connect函数的时候,指定库名称,如果指定的数据库存在就直接打开这个数据库,如果不存在就新创建一个再打开


conn = sqlite3.connect("E:/test.db")

或者也可以在内存中创建


conn = sqlite3.connect(":memory:")

3.数据库连接对象

打开数据库时返回的对象conn就是一个数据库连接对象,它可以有以下操作:

commit()--事务提交
rollback()--事务回滚
close()--关闭一个数据库连接
cursor()--创建一个游标

关于commit(),如果isolation_level隔离级别默认,那么每次对数据库的操作,都需要使用该命令,你也可以设置isolation_level=None,这样就变为自动提交模式。

4.使用游标查询数据库

我们需要使用游标对象SQL语句查询数据库,获得查询对象。 通过以下方法来定义一个游标。


cu=conn.cursor()

游标对象有以下的操作:

execute()--执行sql语句
executemany--执行多条sql语句
close()--关闭游标
fetchone()--从结果中取一条记录,并将游标指向下一条记录
fetchmany()--从结果中取多条记录
fetchall()--从结果中取出所有记录
scroll()--游标滚动

SQLite数据库操作

1. 创建数据库表


cu.execute("create table user (id integer primary key,name varchar(20) UNIQUE,age integer,comment text NULL)")
# 创建一张user表,表中有id(主键),名字(唯一),年龄,备注(默认为空)

2. 插入数据

请注意避免以下写法:


# 这样写会导致注入攻击
pid=200
c.execute("... where id= '%s'" % id)

正确的做法如下,如果t只是单个数值,也要采用t=(n,)的形式,因为元组是不可变的。


for user in[(0,'aaa',111,'aaaa'),(1,'bbb',222,'bbbb')]:
conn.execute("insert into user values (?,?,?,?)", user) # 注意user是元组,不可变
conn.commit() # 注意插入操作之后要进行提交

3. 查询数据


cu.execute("select * from user")
cu.fetchone() # 得到游标的第一个值
cu.execute("select * from user")
cu.fetchall() # 使用游标的fetch函数,fetchall得到所有的查询记录

4. 修改数据


cu.execute("update user set name='ccc' where id = 0")
conn.commit()

5. 删除数据


cu.execute("delete from user where id = 1")
conn.commit()

希望本文所述对大家Python程序设计有所帮助。

标签:Python,SQLite数据库
0
投稿

猜你喜欢

  • 多个jquery.datatable共存,checkbox全选异常的快速解决方法

    2024-05-11 09:18:50
  • DWCS3-CSS布局之一CSS规则大纲

    2008-06-11 18:48:00
  • Python使用淘宝API查询IP归属地功能分享

    2021-02-11 20:37:29
  • pytorch dataloader 取batch_size时候出现bug的解决方式

    2023-08-12 01:27:45
  • 深入浅析Python数据分析的过程记录

    2022-05-04 02:56:27
  • 用SQL批量插入数据的代码

    2024-01-15 04:49:30
  • Python3.10新特性之match语句示例详解

    2023-07-23 05:17:23
  • Python中zip函数如何使用

    2021-03-30 02:54:13
  • Ubuntu 16.04/18.04 安装Pycharm及Ipython的教程

    2023-11-03 03:49:29
  • php实现统计二进制中1的个数算法示例

    2024-06-05 09:39:05
  • Go 结构体序列化的实现

    2024-05-21 10:26:40
  • python开发中range()函数用法实例分析

    2021-05-08 12:53:26
  • 给页面 unload 加上效果

    2009-03-12 12:32:00
  • Python编程给numpy矩阵添加一列方法示例

    2023-08-29 07:22:30
  • 深度辨析Python的eval()与exec()的方法

    2021-09-06 21:46:04
  • Python 模拟动态产生字母验证码图片功能

    2022-02-10 21:03:35
  • django 外键model的互相读取方法

    2021-06-16 20:54:51
  • Python folium的实用功能详解

    2021-08-27 10:07:21
  • 在Python中将函数作为另一个函数的参数传入并调用的方法

    2023-04-10 07:32:26
  • 一种特别简单的MySQL数据库安装方法

    2008-12-17 15:30:00
  • asp之家 网络编程 m.aspxhome.com