python数据库操作sqlite_Python操作SQLite数据库详解

嵌入式数据库的名称来自其独特的运行模式。这种数据库嵌入了应用程序进程中,消除了与客户机/服务器配置相关的开销。嵌入式数据库实际上是轻量级的,在运行时需要较少的内存。嵌入式数据库是使用精简代码编写的,对于嵌入式设备而言,其运行速度更快,效果更理想。

嵌入式运行模式允许嵌入式数据库通过 SQL 来轻松管理应用程序数据,而不依靠原始的文本文件。最为常见的嵌入式数据库是 SQLite 数据库。SQLite 是一个嵌入式数据库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是在世界上广泛部署的 SQL 数据库引擎。

Python 操作 SQLite 数据库同操作 XML 一样,直接引用 SQLite3 类,不需要在 PyCharm 中进行安装。

Python使用execute()方法创建SQLite数据库文件

创建 student.db 数据库文件,并创建 Mstudent 数据表(包括 id、name、age、xuehao、banji 几个字段),代码如下:

import sqlite3

#连接到SQLite数据库

#如果文件不存在,则会自动在当前目录下创建该文件

conn = sqlite3.connect('student.db')

#创建一个游标对象

cursor = conn.cursor()

#创建Mstudent数据表

cursor.execute('create table Mstudent(id int(10) primary key, name varchar(50), age varchar(50), xuehao varchar(50), banji varchar(50))')

#关闭游标

cursor.close()

#关闭数据库连接

conn.close()

在连接 SQLite 数据库的过程中,首先判断对应的数据库文件是否存在,如果不存在则会自动创建该数据库文件,然后在此数据库中进行操作。

Python操作SQLite数据库

对 SQLite 数据库的操作包括增、删、改、查,与操作 MySQL 数据库类似。在这里主要讲解如何向 Mstudent 数据表中新增数据和查找数据,删除和修改操作请读者自行实践。新增数据的代码如下:

import sqlite3

#连接到 SQLite 数据库

conn = sqlite3.connect('student.db')

#创建一个游标对象

cursor = conn.cursor()

#继续执行一条SQL语句,插入一条记录

cursor.execute('insert into Mstudent(id, name, age, xuehao, banji) values("1", "zhangsan1", "20", "180901", "1809")')

conn.commit ()

#数据列表

data = [("2", "zhangsan2", "20", "180902", "1809"),

("3", "zhangsan3", "20", "180903", "1809"),

("4", "zhangsan4", "20", "180904", "1809"),

]

try:

#执行SQL语句,插入多条数据

cursor.executemany ("insert into Mstudent(id, name, age, xuehao,banji) values(?, ?, ?, ?, ?)", data)

#提交数据

conn.commit()

except:

#发生错误回滚

conn.rollback()

#关闭游标

cursor.close()

#提交事务

conn.commit()

#关闭数据库连接

conn.close()

从上述代码中可以看到,如果只提交一条数据,则可以使用 execute( ) 方法;如果要批量提交数据,则需要使用 executemany( ) 方法。在批量提交数据时要注意使用事务提交,避免数据提交失败,产生不可控的结果。

由编程接口 API 可以知道,查找数据有 3 种方法,分别为 fetchone( )、fetchmany(size)、fetchall( )。下面通过一个示例学习这 3 种方法,代码如下:

import sqlite3

#连接到 SQLite 数据库

conn = sqlite3.connect('student.db')

#创建一个游标对象

cursor = conn.cursor()

#继续执行一条SQL语句,插入一条记录

cursor.execute('select * from Mstudent')

#fetchone()方法

result1=cursor.fetchone()

print ("result1=",result1)

#fetchmany(size)方法

cursor.execute('select * from Mstudent')

result2=cursor.fetchmany(3)

print("result2=", result2)

#frfetchall()方法

cursor.execute('select * from Mstudent')

result3=cursor.fetchall()

print("result3",result3)

#关闭游标

cursor.close()

#关闭数据库连接

conn.close()

程序运行结果为:

result1=(1, 'zhangsan1', 20, '180901', '1809')

result2=[(1, 'zhangsan1', 20, '180901', '1809'), (2, 'zhangsan2', 20, '180902', '1809')]

result3 [(1, 'zhangsan1', 20, '180901', '1809'), (2, 'zhangsan2', 20, '180902', '1809'), (4, 'zhangsan4', 20, '180904', '1809')]

从运行结果中比较直观地看到,fetchone( ) 方法获取到一条记录,fetchmany(size) 方法获取到指定条数的结果集,fetchall( ) 方法获取到所有结果集。在获取结果时,游标会被下移,所以在每次使用之前需要重新执行 execute( ) 方法,重置游标位置。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值