Python 如何操作 SQLite 数据库

 更新时间:2020年08月17日 10:34:17   作者:Rocky0429  
这篇文章主要介绍了Python 如何操作 SQLite 数据库,帮助大家更好的理解和学习,感兴趣的朋友可以了解下

写在之前

SQLite 是一个小型的关系型数据库,它最大的特点在于不需要单独的服务、零配置。我们在之前讲过的两个数据库,不管是 MySQL 还是 MongoDB,都需要我们安装。安装之后,然后运行起来,其实这就相当于已经有一个相应的服务在跑着。

SQLite 与前面所说的两个数据库不同。首先Python 已经将相应的驱动模块作为了标准库的一部分,只要是你安装了 Python,就可以使用;再者它可以类似于操作文件那样来操作 SQLite 数据库文件。还有一点,SQLite 源代码不受版权限制。

建立连接

SQLite 也是一个关系型数据库,所以 SQL 可以直接在里面使用。由于 SQLite 的驱动已经在 Python 里面了,所以只要引用就可以直接使用,由于我们之前已经讲过 MySQL 了,所以对于本次内容理解起来就容易多了。

>>> import sqlite3
>>> conn = sqlite3.connect('lite.db')

由上面的代码我们得到了连接对象,是不是觉得比 MySQL 连接要简单很多呢?在 sqlite3.connect('lite.db') 中,如果已经有了那个数据库,就直接连接它,如果没有的话,就会自动建一个。需要注意的是,这里的路径是可以随意指定的。

下面的代码显示的是连接对象的属性和方法:

>>> dir(conn)
['DataError', 'DatabaseError', 'Error', 'IntegrityError', 'InterfaceError', 'InternalError', 'NotSupportedError', 'OperationalError', 'ProgrammingError', 'Warning', '__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__enter__', '__eq__', '__exit__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'close', 'commit', 'create_aggregate', 'create_collation', 'create_function', 'cursor', 'execute', 'executemany', 'executescript', 'in_transaction', 'interrupt', 'isolation_level', 'iterdump', 'rollback', 'row_factory', 'set_authorizer', 'set_progress_handler', 'set_trace_callback', 'text_factory', 'total_changes']

建立游标

这一步其实跟 MySQL 也很类似,连接了数据库之后,要建立游标对象:

>>> cur = conn.cursor()

接下来就是对数据库内容的操作,都是用游标对象方法来实现:

>>> dir(cur)
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'arraysize', 'close', 'connection', 'description', 'execute', 'executemany', 'executescript', 'fetchall', 'fetchmany', 'fetchone', 'lastrowid', 'row_factory', 'rowcount', 'setinputsizes', 'setoutputsize']

我们在里面看到了一系列我们熟悉的名称:close()、execute()、fetchall() 等。

1.创建数据库表

面对 SQLite 数据库,我们之前熟悉的 SQL 指令都可以用:

>>> create_table = "create table books (title,author,language)"
>>> cur.execute(create_table)
<sqlite3.Cursor object at 0x104f296c0>

这样就在数据库 lite.db 中建立了一个表 books。对这个表可以增加数据:

>>> cur.execute('insert into books values("python basic","rocky","python")')
<sqlite3.Cursor object at 0x104f296c0>

为了保证数据能够保存,还要进行如下操作:

>>> conn.commit()
>>> cur.close()
>>> conn.close()

以上,在刚才建立的数据库中已经有了一个表 books,表中已经有了一条记录。

2.查询

保存以后我们来查询一下:

>>> conn = sqlite3.connect('lite.db')
>>> cur = conn.cursor()
>>> cur.execute('select * from books')
<sqlite3.Cursor object at 0x104f297a0>
>>> cur.fetchall()
[('python basic', 'rocky', 'python')]

3.批量插入

我们来给 books 表中多增加一些内容,以便于我们进行其它的操作:

>>> books = [("first book","first","c"),("second book","second","c++"),("third book","third","java")]

这次我们来一个批量插入:

>>> cur.executemany('insert into books values (?,?,?)',books)
<sqlite3.Cursor object at 0x104f297a0>
>>> conn.commit()

接下来我们用循环语句来打印一下查询结果:

>>> rows = cur.execute('select * from books')
>>> for row in rows:
... print(row)
... 
('python basic', 'rocky', 'python')
('first book', 'first', 'c')
('second book', 'second', 'c++')
('third book', 'third', 'java')

4.更新

正如我们前面所说的,在 cur.execute() 中,可以写 SQL 语句来操作数据库:

>>> cur.execute("update books set title='physics' where author='first'")
<sqlite3.Cursor object at 0x104f297a0>
>>> conn.commit()

接下来我们按照条件查询来看一看:

>>> cur.execute("select * from books where author='first'")
<sqlite3.Cursor object at 0x104f297a0>
>>> cur.fetchall()


[('physics', 'first', 'c')]

5.删除

删除也是操作数据库必须的动作:

>>> cur.execute("select * from books")
<sqlite3.Cursor object at 0x104f297a0>
>>> cur.fetchall()
[('python basic', 'rocky', 'python'), ('physics', 'first', 'c'), ('third book', 'third', 'java')]

最后不要忘记在完成对数据库的操作以后,一定记得给人家「关上门」:

>>> cur.close()
>>> conn.close()

写在之后

基本的知识差不多就是这些,当然肯定不局限于此。在实际的编程中我们肯定会遇到很多的问题,大家记得要多多去查阅官方文档,学会解决问题。

至此,Python 操作数据这一部分就结束了,其实不光是这一个章节的结束,我计划里面的整个「零基础入门学习 Python」这个系列也到此结束了,后续随着我碰到的知识的增加,还会再给大家更新关于 Python 方面的东西,让我们一起加油。

如果你觉得本篇文章对你有所帮助的话,欢迎点赞 + 关注,期待和你的交流。

The end。

以上就是Python 如何操作 SQLite 数据库的详细内容,更多关于python操作 SQLite 数据库的资料请关注脚本之家其它相关文章!

相关文章

  • Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】

    Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】

    这篇文章主要介绍了Python图像处理之直线和曲线的拟合与绘制,结合实例形式分析了Python曲线拟合相关函数curve_fit()的使用技巧,需要的朋友可以参考下
    2018-12-12
  • Python连接数据库并批量插入包含日期记录的操作

    Python连接数据库并批量插入包含日期记录的操作

    这篇文章主要介绍了Python连接数据库并批量插入包含日期记录的操作,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • Python实现将蓝底照片转化为白底照片功能完整实例

    Python实现将蓝底照片转化为白底照片功能完整实例

    这篇文章主要介绍了Python实现将蓝底照片转化为白底照片功能,结合完整实例形式分析了Python基于cv2库进行图形转换操作的相关实现技巧,需要的朋友可以参考下
    2019-12-12
  • 请不要重复犯我在学习Python和Linux系统上的错误

    请不要重复犯我在学习Python和Linux系统上的错误

    本人已经在运维行业工作了将近十年,我最早接触Linux是在大二的样子,那时候只追求易懂,所以就选择了Ubuntu作为学习、使用的对象,它简单、易用、好操作、界面绚丽,对于想接触Linux的新手来说是非常不错的
    2016-12-12
  • python反反爬虫技术限制连续请求时间处理

    python反反爬虫技术限制连续请求时间处理

    这篇文章主要为大家介绍了python反反爬虫技术限制连续请求时间处理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-06-06
  • python读取xlsx的方法

    python读取xlsx的方法

    今天小编就为大家分享一篇python读取xlsx的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python编程利用科赫曲线实现三维飘雪效果示例过程

    Python编程利用科赫曲线实现三维飘雪效果示例过程

    这篇文章主要介绍了Python编程实现三维飘雪效果示例过程,通过本示例你可以自己做出一个浪漫的雪花飘落效果,有需要的朋友可以借鉴参考下
    2021-10-10
  • Python实现为PDF去除水印的示例代码

    Python实现为PDF去除水印的示例代码

    这篇文章主要介绍了如何利用Python实现PDF去除水印功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • 一文轻松掌握Python虚拟环境的删除技巧

    一文轻松掌握Python虚拟环境的删除技巧

    通过虚拟环境,可以轻松定义和安装特定于项目的包,下面这篇文章主要给大家介绍了关于Python虚拟环境删除技巧的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • 如何使用Python快速生成gif图

    如何使用Python快速生成gif图

    这篇文章主要给大家介绍了关于如何使用Python快速生成gif图的相关资料,我们需要用到 imageio 库,文章通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-02-02

最新评论