Python 操作SQLite3数据库的实现示例

 更新时间:2026年02月24日 08:40:15   作者:EPICS Technical  
本文主要介绍了Python 操作SQLite3数据库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

从 Python3.x 版本开始,在标准库中已经内置了 SQLite3 模块,它可以支持 SQLite3 数据库的访问和相关的数据库操作。在需要操作 SQLite3 数据库数据时,只须在程序中导入 SQLite3 模块即可。Python 语言操作 SQLite3 数据库的基本流程如下所示。

(1) 导入相关库或模块(SQLite3)。

(2) 使用 connect() 连接数据库并获取数据库连接对象。它提供了以下方法:

  1. .cursor() 方法来创建一个游标对象
  2. .commit() 方法来处理事务提交
  3. .rollback() 方法来处理事务回滚
  4. .close() 方法来关闭一个数据库连接

(3) 使用 con.cursor() 获取游标对象。

(4) 使用游标对象的方法(execute()、executemany()、fetchall()等)来操作数据库,实现插入、修改和删除操作,并查询获取显示相关的记录。在 Python 程序中,连接函数 sqlite3.connect() 有如下两个常用参数。

  1. database: 表示要访问的数据库名。
  2. timeout: 表示访问数据的超时设定。

(5) 使用 close() 关闭游标对象和数据库连接。数据库操作完成之后,必须及时调用其 close() 方法关闭数据库连接,这样做的目的是减轻数据库服务器的压力。

使用 SQLite3 创建表

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

con=sqlite3.connect('/home/blctrl/sqlite-db/first.db')

下面实例代码演示使用 SQLite3 创建数据库的过程。

# 导入 sqlite3 模块
import sqlite3

# 1.硬盘上创建连接
con = sqlite3.connect('/home/blctrl/sqlite-db/example.db')

# 获取 cursor 对象
cur = con.cursor()

# 执行 sql 创建表
sql = '''
    CREATE TABLE t_person(
        pno INTEGER PRIMARY KEY AUTOINCREMENT ,
        pname varchar(30) NOT NULL,
        age INTEGER)
'''

try:
    cur.execute(sql)

except Exception as e:
    print(e)
    print('创建表失败')

finally:
    # 关闭游标
    cur.close()
    # 关闭连接
    con.close()

在IPython下测试:

In [1]: import sqlite3

In [2]: con = sqlite3.connect('/home/blctrl/sqlite-db/example.db')

In [3]: cur = con.cursor()

In [4]: sql = '''
   ...:     CREATE TABLE t_person(
   ...:         pno INTEGER PRIMARY KEY AUTOINCREMENT ,
   ...:         pname varchar(30) NOT NULL,
   ...:         age INTEGER)
   ...: '''
   ...:

In [5]: try:
   ...:     cur.execute(sql)
   ...:     print('create Table successfully!')
   ...: except Exception as e:
   ...:     print(e)
   ...:     print("Failed to create table!")
   ...: finally:
   ...:     cur.close()
   ...:     con.close()
   ...:
create Table successfully!

使用 SQLite3 插入数据

调用游标对象的 execute 执行插入的 sql,使用 executemany() 执行多条 sql 语句,使用 executemany()比循环使用execute()执行多条sql语句效率高.

示例: 使用SQLite3插入一条数据

# 导入 sqllite3 模块
import sqlite3

# 硬盘上创建连接
con = sqlite3.connect('/home/blctrl/sqlite-db/example.db')

# 获取 cursor 对象
cur = con.cursor()
# 构造sql插入语句
sql = 'insert into t_person(pname,age) values(?,?)'
try:
    cur.execute(sql,('XRR',23))
    # 插入多条
    cur.executemany(sql, [('XFS', 25),('XPS', 21), ('XRD', 30)])
# 提交事务
    con.commit()
    print('插入成功')
except Exception as e:
    print(e)
    print('插入失败')
    con.rollback()
finally:
    # 关闭游标
    cur.close()
    # 关闭连接
    con.close()

在IPython中进行单条数据插入的测试:

In [12]: con = sqlite3.connect('/home/blctrl/sqlite-db/example.db')

In [13]: cur = con.cursor()

In [14]: sql = 'insert into t_person(pname,age) values(?,?)'

In [15]: try:
    ...:     cur.execute(sql, ('XRR',28))
    ...:     con.commit()
    ...:     print("Insert successfully")
    ...: except Exception as e:
    ...:     print(e)
    ...:     print("Insert failed")
    ...:     con.rollback()
    ...: finally:
    ...:     cur.close()
    ...:     con.close()
    ...:
Insert successfully

在IPython中进行多条数据插入的测试:

In [16]: con = sqlite3.connect('/home/blctrl/sqlite-db/example.db')

In [17]: cur = con.cursor()

In [18]: sql = 'insert into t_person(pname,age) values(?,?)'

In [19]: try:
    ...:     cur.executemany(sql, [('XFS', 25),('XPS', 21), ('XRD', 30)])
    ...:     con.commit()
    ...:     print("Many insert successfully")
    ...: except Exception as e:
    ...:     print(e)
    ...:     print("Many insert failed")
    ...:     con.rollback()
    ...: finally:
    ...:     cur.close()
    ...:     con.close()
    ...:
Many insert successfully

使用 SQLite3 查询数据

查询数据,游标对象提供了 fetchall() 和 fetchone() 方法。fetchall() 方法获取所有数据,返回一个列表。fetchone() 方法获取其中一个结果,返回一个元组。

【示例】fetchall() 查询所有数据

# 导入 sqllite3 模块
import sqlite3

# 硬盘上创建连接
con = sqlite3.connect('/home/blctrl/sqlite-db/example.db')

# 获取 cursor 对象
cur = con.cursor()

# 创建查询SQL语句
sql = 'SELECT * FROM t_person'
try:
    cur.execute(sql)
    # 获取所有数据
    person_all = cur.fetchall()
    # person = cur.fetchone() 获取一条数据
    # print(person_all)
    # 遍历
    for p in person_all:
        print(p)
except Exception as e:
    print(e)
    print('查询失败')
finally:
    # 关闭游标
    cur.close()
    # 关闭连接
    con.close()

使用IPython测试:

In [1]: import sqlite3

In [2]: con = sqlite3.connect('/home/blctrl/sqlite-db/example.db')

In [3]: cur = con.cursor()

In [4]: sql = 'SELECT * FROM t_person';

In [5]: try:
   ...:     cur.execute(sql)
   ...:     person_all = cur.fetchall()
   ...:     for p in person_all:
   ...:         print(p)
   ...: except Exception as e:
   ...:     print(e)
   ...:     print('acquire failed')
   ...: finally:
   ...:     cur.close()
   ...:     con.close()
   ...:
(1, 'XRR', 28)
(2, 'XFS', 25)
(3, 'XPS', 21)
(4, 'XRD', 30)

使用 SQLite3 修改数据

# 导入 sqllite3 模块
import sqlite3

# 硬盘上创建连接
con = sqlite3.connect('/home/blctrl/sqlite-db/example.db')

# 获取 cursor 对象
cur = con.cursor()
# 构造更新数据的sql语句
update_sql = 'update t_person set pname=? where pno=?'
try:
    cur.execute(update_sql, ('ABC', 1))

    # 提交事务
    con.commit()
    print('修改成功')

except Exception as e:
    print(e)
    print('修改失败')
    con.rollback()

finally:
    cur.close()
    con.close()

IPython中测试修改:

In [6]: con = sqlite3.connect('/home/blctrl/sqlite-db/example.db')

In [7]: cur = con.cursor()

In [8]: update_sql = 'UPDATE t_person SET pname=? WHERE pno=?'

In [9]: try:
   ...:     cur.execute(update_sql, ('ABC', 1))
   ...:     con.commit()
   ...:     print('Modify Successfully')
   ...: except Exception as e:
   ...:     print(e)
   ...:     con.rollback()
   ...:     print('Modify failed')
   ...: finally:
   ...:     cur.close()
   ...:     con.close()
   ...:
Modify Successfully

使用 SQLite3 删除数据

# 导入 sqllite3 模块
import sqlite3

# 硬盘上创建连接
con = sqlite3.connect('/home/blctrl/sqlite-db/example.db')

# 获取 cursor 对象
cur = con.cursor()
# 构造更新数据的sql语句
delete_sql = 'DELETE FROM t_person where pno=?'
try:
    cur.execute(delete_sql, (1,))

    # 提交事务
    con.commit()
    print('删除成功')

except Exception as e:
    print(e)
    print('删除失败')
    con.rollback()

finally:
    cur.close()
    con.close()

IPython中测试删除:

In [14]:  con = sqlite3.connect('/home/blctrl/sqlite-db/example.db')

In [15]:  cur = con.cursor()

In [16]: delete_sql = 'DELETE FROM t_person WHERE pno=?'

In [17]: try:
    ...:     cur.execute(delete_sql, (1,))
    ...:     con.commit()
    ...:     print('DELETE Successfully')
    ...: except Exception as e:
    ...:     print(e)
    ...:     print('DELETE failed')
    ...:     con.rollback()
    ...: finally:
    ...:     cur.close()
    ...:     con.close()
    ...:
DELETE Successfully

到此这篇关于Python 操作SQLite3数据库的文章就介绍到这了,更多相关Python 操作SQLite3内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python与c语言的语法有哪些不一样的

    python与c语言的语法有哪些不一样的

    在本篇内容里小编给大家整理的是一篇关于python与c语法区别的相关内容,有兴趣的朋友们可以参考下。
    2020-09-09
  • 对Python发送带header的http请求方法详解

    对Python发送带header的http请求方法详解

    今天小编就为大家分享一篇对Python发送带header的http请求方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python如何使用jt400.jar包代码实例

    python如何使用jt400.jar包代码实例

    这篇文章主要介绍了python如何使用jt400.jar包代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • python实现aes加密及pycryptodome库使用

    python实现aes加密及pycryptodome库使用

    AES算法是高级加密标准,它是一种对称加密算法,AES只有一个密钥,这个密钥既用来加密,也用于解密,这篇文章主要给大家介绍了关于python实现aes加密及pycryptodome库使用的相关资料,需要的朋友可以参考下
    2023-10-10
  • Python的爬虫程序编写框架Scrapy入门学习教程

    Python的爬虫程序编写框架Scrapy入门学习教程

    Python的一大优势就是可以轻松制作Web爬虫,而超高人气的Scrapy则是名副其实的Python编写爬虫的利器,这里我们就来看一下Python的爬虫程序编写框架Scrapy入门学习教程:
    2016-07-07
  • Python中文件常用操作的完整代码(零基础就能上手)

    Python中文件常用操作的完整代码(零基础就能上手)

    文件是存储在磁盘上的数据集合,通过文件名进行标识,Python程序需要先建立与磁盘文件的通道才能读取或写入数据,本文将和大家详细介绍了Python中文件的一些常用操作,希望对大家有所帮助
    2026-06-06
  • Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例

    Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例

    这篇文章主要介绍了Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能,结合实例形式分析了Python基于TCP UDP协议的IPv4 IPv6模式客户端和服务端数据发送与接收相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • python如何拆分含有多种分隔符的字符串

    python如何拆分含有多种分隔符的字符串

    这篇文章主要为大家详细介绍了python如何拆分含有多种分隔符的字符串,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • Python unittest快速入门使用指南

    Python unittest快速入门使用指南

    这篇文章主要介绍了Python unittest快速入门使用的相关资料,Unittest是Python标准库中自带的单元测试框架,Unittest有时候也被称为PyUnit,就像JUnit是Java语言的标准单元测试框架一样,Unittest则是Python语言的标准单元测试框架,需要的朋友可以参考下
    2025-11-11
  • python在Windows下安装setuptools(easy_install工具)步骤详解

    python在Windows下安装setuptools(easy_install工具)步骤详解

    这篇文章主要介绍了python在Windows下安装setuptools(easy_install工具)步骤,简单介绍了setuptools并分析了其安装步骤与所涉及的相关软件,需要的朋友可以参考下
    2016-07-07

最新评论