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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • django页面跳转问题及注意事项

    django页面跳转问题及注意事项

    这篇文章主要介绍了django页面跳转问题及注意事项,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-07-07
  • python中hashlib模块用法示例

    python中hashlib模块用法示例

    这篇文章主要介绍了python中hashlib模块用法示例,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • python下的opencv画矩形和文字注释的实现方法

    python下的opencv画矩形和文字注释的实现方法

    今天小编就为大家分享一篇python下的opencv画矩形和文字注释的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python简单商城购物车实例代码

    python简单商城购物车实例代码

    这篇文章主要为大家详细介绍了python简单商城购物车的实例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • 关于pytorch训练分类器

    关于pytorch训练分类器

    这篇文章主要介绍了关于pytorch训练分类器问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 仅用50行代码实现一个Python编写的计算器的教程

    仅用50行代码实现一个Python编写的计算器的教程

    这篇文章主要介绍了仅用50行代码实现一个Python编写的计算器的教程,主要用到了PlyPlus库使得核心代码十分简单,需要的朋友可以参考下
    2015-04-04
  • python实现二级登陆菜单及安装过程

    python实现二级登陆菜单及安装过程

    这篇文章主要介绍了python实现二级登陆菜单及安装过程,,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-06-06
  • Python unittest discover批量执行代码实例

    Python unittest discover批量执行代码实例

    这篇文章主要介绍了Python unittest discover批量执行代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 基于Python制作天眼查小程序的示例代码

    基于Python制作天眼查小程序的示例代码

    本文主要介绍了如何利用Python制作一个天眼查GUI程序。这次的GUI程序,我们使用的框架是PyQt5,该框架拥有比tkinter更为丰富的内置组件,在界面美化方面,貌似也更胜一筹,快跟随小编一起学起来吧
    2022-09-09
  • Django中对数据查询结果进行排序的方法

    Django中对数据查询结果进行排序的方法

    这篇文章主要介绍了Django中对数据查询结果进行排序的方法,利用Python代码代替SQL进行一些简单的操作,需要的朋友可以参考下
    2015-07-07

最新评论