iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python中Sqlite3如何使用
  • 225
分享到

Python中Sqlite3如何使用

2023-06-17 03:06:46 225人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

今天就跟大家聊聊有关python中sqlite3如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 使用大量操作如果你需要在数据库中一次性插入很多行,那么你真不应该使用 ex

今天就跟大家聊聊有关pythonsqlite3如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

1. 使用大量操作

如果你需要在数据库中一次性插入很多行,那么你真不应该使用 execute。sqlite3 模块提供了批量插入的方式:executemany。

而不是像这样做:

for row in iter_data():  connection.execute('INSERT INTO my_table VALUES (?)', row)

你可以利用这个事实,即 executemany 接受元组的生成器作为参数:

connection.executemany(     'INSERT INTO my_table VALUE (?)',     iter_data() )

这不仅更简洁,而且更高效。实际上,sqlite3 在幕后利用 executemany 实现 execute,但后者插入一行而不是多行。

我写了一个小的基准测试,将一百万行插入空表(数据库在内存中):

  • executemany: 1.6 秒

  • execute: 2.7 秒

2. 你不需要游标

一开始我经常搞混的事情就是,光标管理。在线示例和文档中通常如下:

connection = sqlite3.connect(':memory:') cursor = connection.cursor() # Do something with cursor

但大多数情况下,你根本不需要光标,你可以直接使用连接对象。

像 execute

executemany

类似的操作可以直接在连接上调用。以下是一个证明此事的示例:

import sqlite3  connection = sqlite3(':memory:')  # Create a table connection.execute('CREATE TABLE events(ts, msg)')  # Insert values connection.executemany(     'INSERT INTO events VALUES (?,?)',     [         (1, 'foo'),         (2, 'bar'),         (3, 'baz')     ] )  # Print inserted rows for row in connnection.execute('SELECT * FROM events'):     print(row)

3. 光标(Cursor)可被用于迭代

你可能经常会看到使用fetchone或fetchall来处理 SELECT  查询结果的示例。但是我发现处理这些结果的最自然的方式是直接在光标上迭代:

for row in connection.execute('SELECT * FROM events'):     print(row)

这样一来,只要你得到足够的结果,你就可以终止查询,并且不会引起资源浪费。当然,如果事先知道你需要多少结果,可以改用 LIMIT  SQL语句,但Python生成器是非常方便的,可以让你将数据生成与数据消耗分离。

4. 使用Context Managers(上下文管理器)

即使在处理SQL事务的中间,也会发生讨厌的事情。为了避免手动处理回滚或提交,你可以简单地使用连接对象作为上下文管理器。  在以下示例中,我们创建了一个表,并错误地插入了重复的值:

import sqlite3 connection = sqlite3.connect(':memory:')  with connection:     connection.execute(         'CREATE TABLE events(ts, msg, PRIMARY KEY(ts, msg))')  try:     with connection:         connection.executemany('INSERT INTO events VALUES (?, ?)', [             (1, 'foo'),             (2, 'bar'),             (3, 'baz'),             (1, 'foo'),         ]) except (sqlite3.OperationalError, sqlite3.IntegrityError) as e:     print('Could not complete operation:', e)      # No row was inserted because transaction failed for row in connection.execute('SELECT * FROM events'):     print(row)      connection.close()

5. 使用Pragmas

…当它真的有用时

在你的程序中有几个 pragma 可用于调整 sqlite3 的行为。特别地,其中一个可以改善性能的是 synchronous :

connection.execute('PRAGMA synchronous = OFF')

你应该知道这可能是危险的。如果应用程序在事务中间意外崩溃,数据库可能会处于不一致的状态。所以请小心使用!  但是如果你要更快地插入很多行,那么这可能是一个选择。

6. 推迟索引创建

假设你需要在数据库上创建几个索引,而你需要在插入很多行的同时创建索引。把索引的创建推迟到所有行的插入之后可以导致实质性的性能改善。

7. 使用占位符插入 Python 值

使用 Python 字符串操作将值包含到查询中是很方便的。但是这样做非常不安全,而 sqlite3 给你提供了更好的方法来做到这一点:

# Do not do this! my_timestamp = 1 c.execute("SELECT * FROM events WHERE ts = '%s'" % my_timestamp)  # Do this instead my_timestamp = (1,) c.execute('SELECT * FROM events WHERE ts = ?', my_timestamp)

看完上述内容,你们对Python中Sqlite3如何使用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网Python频道,感谢大家的支持。

--结束END--

本文标题: Python中Sqlite3如何使用

本文链接: https://www.lsjlt.com/news/286963.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python中Sqlite3如何使用
    今天就跟大家聊聊有关Python中Sqlite3如何使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 使用大量操作如果你需要在数据库中一次性插入很多行,那么你真不应该使用 ex...
    99+
    2023-06-17
  • python 使用sqlite3
    Sqlite是一个轻量级的数据库,类似于Access.一、 安装Python 2.5开始提供了对sqlite的支持,带有sqlite3库.没有sqli...
    99+
    2023-01-31
    python
  • Node.js中如何使用SQLite3和MongoDB
    Node.js中如何使用SQLite3和MongoDB,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。setup.js:初始化数据库var&...
    99+
    2024-04-02
  • python sqlite3 的使用,性
    sqlite3 的使用,性能及限制python 中使用sqlite3首先是基本的使用:# coding=utf8 __author__ = 'Administrator' # 导入模块,在 python 中是已经内置了这个模块,所以就不...
    99+
    2023-01-31
    python
  • python之sqlite3使用详解
    Python SQLITE数据库是一款非常小巧的嵌入式开源数据库软件,也就是说没有独立的维护进程,所有的维护都来自于程序本身。它使用一个文件存储整个数据库,操作十分方便。它的最大优点是使用方便,功能相比于其它大型数据库来说,确实有...
    99+
    2023-01-31
    详解 python
  • python中怎么使用sqlite3数据库
    python中怎么使用sqlite3数据库,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Python SQLITE数据库是一款非常小巧的嵌入式...
    99+
    2024-04-02
  • SQLite3 sql命令行如何使用
    小编给大家分享一下SQLite3 sql命令行如何使用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!SQLite是一个轻量级的S...
    99+
    2024-04-02
  • Linux下如何安装和使用SQLite3
    本文小编为大家详细介绍“Linux下如何安装和使用SQLite3”,内容详细,步骤清晰,细节处理妥当,希望这篇“Linux下如何安装和使用SQLite3”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。SQLite3...
    99+
    2023-06-27
  • SQLite3中文编码 Python
    读取十万多条文本写入SQLite类型数据库,由于文本中存在中文字符,插入到数据库没错,取出时一直是UnicodeDecodeError,导致折腾了一天。  最后的解决方法: Python连接数据时进行如下设置: db=sqlite3....
    99+
    2023-01-31
    中文 Python
  • 如何在python3中使用sqlite3限制条件查询
    如何在python3中使用sqlite3限制条件查询?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。import json import sql...
    99+
    2023-06-14
  • sqlite3使用总结
           OS X自从10.4后把SQLite这套相当出名的数据库软件,放进了作业系统工具集里。OS X包装的是第三版的SQLite,又称SQLite3。这套软件有几个特色:软件属于公共财(public domain),SQLite可说...
    99+
    2023-01-31
  • Android使用SQLITE3 WAL
    sqlite是支持write ahead logging(WAL)模式的,开启WAL模式可以提高写入数据库的速度,读和写之间不会阻塞,但是写与写之间依然是阻塞的,但是如果使用默认的TRUNCATE模式,当写入数据时会阻塞android中其他...
    99+
    2023-01-31
    Android WAL
  • 怎么使用SQLite3
    这篇文章主要讲解了“怎么使用SQLite3”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用SQLite3”吧!开始使用这个功能强大且通用的数据库吧。应...
    99+
    2024-04-02
  • Python中的sqlite3数据库怎么用
    今天小编给大家分享一下Python中的sqlite3数据库怎么用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。sqlite3...
    99+
    2023-07-04
  • 如何将sqlite3中数据导入到mysql中
    小编给大家分享一下如何将sqlite3中数据导入到mysql中,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方法如下:从sqli...
    99+
    2024-04-02
  • django的sqlite3的使用_1
    在settings.py文件中找到下列关于数据库参数的设定。 DATABASES = {     'default': {         'ENGINE': 'sqlite3',         'NAME': 'E:/catsite/...
    99+
    2023-01-31
    django
  • django的sqlite3的使用_3_
    此内容进行用户管理,首先在settings.py中启用django.contrib的app。 INSTALLED_APPS = (     'django.contrib.auth',     'django.contrib.conten...
    99+
    2023-01-31
    django
  • 我学习ophone里使用sqlite3
    写得很辛苦,大家觉得好的话请多多回帖支持我,有时间会发布第二篇 演示环境 Windows xp Eclipse 3.4.2 Ophone SDK 1.0   一、 创建工程 在Eclipse里 File->new->Androi...
    99+
    2023-01-31
    ophone
  • 怎么在python中使用sqlite3判断cursor的结果是否为空
    这期内容当中小编将会给大家带来有关怎么在python中使用sqlite3判断cursor的结果是否为空,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python可以做什么Python是一种编程语言,内置了...
    99+
    2023-06-14
  • 嵌入式数据库Sqlite3之如何使用子句和函数
    这篇文章主要讲解了“嵌入式数据库Sqlite3之如何使用子句和函数”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“嵌入式数据库Sqlite3之如何使用子句和函...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作