`
peikona
  • 浏览: 50858 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

Python保存二进制数据到sqlite3

阅读更多

我们有这样一个需求:要保存二进制文件到数据库,以后还要从数据库读出来使用。到网上g了一下,发现可以实现,记录以备忘。

 

# coding: utf8

# Python2.6.2

import sqlite3

db = sqlite3.connect('test.db')
cur = db.cursor()

cur.execute("CREATE TABLE if not exists t (b BLOB);")

with open('0.bin', 'rb') as f:
    cur.execute("insert into t values(?)", (sqlite3.Binary(f.read()), ))
    db.commit()

cur.execute('select b from t limit 1')
b = cur.fetchone()[0]

with open('00.bin', 'wb') as f:
    f.write(b)

db.close()

 

验证方法可以参见上一篇python计算checksum的文章

分享到:
评论
13 楼 kingheaven 2009-07-17  
vb2005xu 写道
现在可以了, 有个疑问,python那个open读取文件,是按字节还是按块读取啊?


一般不是用readlines()或readline()读吗, 这是按行读的.
12 楼 vb2005xu 2009-07-17  
现在可以了, 有个疑问,python那个open读取文件,是按字节还是按块读取啊?
11 楼 zzsczz 2009-07-16  
貌似 sqlite3  不可以 保存 带"00"字节的 数据啊

所以 binary数据都先编码,然后存储

哪位 核实一下撒


10 楼 peikona 2009-07-16  
kingheaven 写道
peikona 写道
kingheaven 写道
vb2005xu 写道
E:\Python25\turbogears1.0.7\tgprj\hello>python tsqlite.py
  File "tsqlite.py", line 14
    db.commit()
     ^
SyntaxError: invalid syntax


是否是缩进错误呢?

Sorry, 13行漏掉了一个右括号。


哈哈, 原来如此, 看来你不是用IDE写的程序.

配置好的机器用Eclipse+Pydev,配置差的用scite,不过最近发现scite很好用。除了没有文件浏览和类浏览等功能外,还比较好用,快速小巧。
9 楼 kingheaven 2009-07-16  
peikona 写道
kingheaven 写道
vb2005xu 写道
E:\Python25\turbogears1.0.7\tgprj\hello>python tsqlite.py
  File "tsqlite.py", line 14
    db.commit()
     ^
SyntaxError: invalid syntax


是否是缩进错误呢?

Sorry, 13行漏掉了一个右括号。


哈哈, 原来如此, 看来你不是用IDE写的程序.
8 楼 peikona 2009-07-16  
kingheaven 写道
vb2005xu 写道
E:\Python25\turbogears1.0.7\tgprj\hello>python tsqlite.py
  File "tsqlite.py", line 14
    db.commit()
     ^
SyntaxError: invalid syntax


是否是缩进错误呢?

Sorry, 13行漏掉了一个右括号。
7 楼 kingheaven 2009-07-16  
vb2005xu 写道
E:\Python25\turbogears1.0.7\tgprj\hello>python tsqlite.py
  File "tsqlite.py", line 14
    db.commit()
     ^
SyntaxError: invalid syntax


是否是缩进错误呢?
6 楼 vb2005xu 2009-07-16  
E:\Python25\turbogears1.0.7\tgprj\hello>python tsqlite.py
  File "tsqlite.py", line 14
    db.commit()
     ^
SyntaxError: invalid syntax
5 楼 peikona 2009-07-15  
vb2005xu 写道
即使加上了 你这段代码还是运行不了,14行出问题

可否贴出是什么错误?
4 楼 kingheaven 2009-07-15  
兄台的代码写的不错~但是有个小问题就是~不用没执行一次insert就commit()提交一次, 可以执行完多个insert后一次性提交, 这样数据库的压力也小.
3 楼 vb2005xu 2009-07-15  
即使加上了 你这段代码还是运行不了,14行出问题
2 楼 peikona 2009-07-14  
<div class="quote_title">vb2005xu 写道</div>
<div class="quote_div">你这个代码语法都有问题 还好意思往上贴 晕死 <br>12: Warning: 'with' will become a reserved keyword in Python 2.6</div>
<p> </p>
<p> 拜托你看清楚点,我上面的注释里写了是用的Python2.6.2。而且你的警告里也说明了'with'在Python2.6里将是个关键字,如果你用的是Python2.5,那么请在导入语句的开头写上: from __future__ import with_statement</p>
1 楼 vb2005xu 2009-07-14  
你这个代码语法都有问题 还好意思往上贴 晕死
12: Warning: 'with' will become a reserved keyword in Python 2.6

相关推荐

    python-二进制读写.docx

    在Python编程中,二进制读写是处理非文本数据如图像、音频、视频等文件时必不可少的操作。这些文件由二进制数据组成,由0和1构成的位序列,不包含任何格式化的字符,因此读写速度相对较快。Python通过内置的`open()`...

    2014年辛星Python数据库Sqlite3教程

    从数据库基础到SQLite3的特点,再到Python与SQLite3的配合操作,本教程覆盖了数据库学习的各个方面。尽管技术发展日新月异,这份教程仍然是一个了解Python与SQLite3交互的优秀起点。对于希望继续深入了解数据库世界...

    二进制图片的读写

    读取数据库中的二进制图片时,可以使用`SELECT`语句获取数据,然后将二进制数据保存到文件或直接显示。例如: ```python cursor.execute("SELECT image FROM images WHERE id=1") result = cursor.fetchone()[0] ...

    python 用sqlite3

    - `text_factory`可以设置字符串类型处理方式,默认是`str`,也可以设置为`bytes`处理二进制数据。 - `sqlite3.connect()`的`isolation_level`参数可以设置事务隔离级别。 10. 错误处理: 在进行数据库操作时,...

    Python库 | sqlite3_to_mysql-1.3.4-py2.py3-none-any.whl

    6. **.whl文件**: .whl是Python的二进制分发格式,用于简化安装过程。这种文件格式包含了预编译的Python扩展和纯Python包,使得用户可以避免使用pip安装时编译源代码的步骤。 7. **Python版本兼容性**: "py2.py3-...

    Python库 | stream_sqlite-0.0.23-py3-none-any.whl

    6. **安装与使用**:由于提供的资源是一个`.whl`文件,这是Python的二进制包格式,用户可以通过`pip`工具直接安装,无需编译源代码。只需在命令行中输入`pip install stream_sqlite-0.0.23-py3-none-any.whl`即可。 ...

    Python库 | sqlite_backup-0.1.3-py3-none-any.whl

    它包含了Python库的二进制形式,使得安装过程更为高效,无需通过源代码进行编译。此文件是sqlite_backup库的0.1.3版本,适用于Python 3解释器,不依赖于特定的体系结构(即“none”)和平台(“any”)。 sqlite_...

    Python库 | fec_to_sqlite-0.2-py3-none-any.whl

    `.whl`是Python的二进制分发格式,它类似于Java的`.jar`文件,提供了一个预编译的Python包,使得安装过程更加简单、快速,尤其在没有`pip`或`setuptools`的环境中。 SQLite是一个轻量级的、自包含的、无服务器的SQL...

    sqlite-dll-win64-x64-3310100.zip

    2. **sqlite3.dll**:这是SQLite3的核心组件,是一个实际执行数据库操作的二进制文件。当Python的pysqlite2模块(在Python 3中已重命名为sqlite3)尝试连接到SQLite数据库时,它会依赖这个DLL来完成底层的数据操作。...

    Python库 | sqlite_s3vfs-0.0.11-py3-none-any.whl

    `py3-none-any`表示这是一个纯Python模块,不包含任何特定平台的二进制组件。 安装`sqlite_s3vfs`库非常简单,用户可以直接使用Python的pip工具,通过以下命令进行安装: ```bash pip install sqlite_s3vfs-0.0.11...

    sqlite3.rar

    5. **丰富的数据类型**:支持整型、浮点型、字符串、BLOB(二进制大对象)等多种数据类型。 6. **索引与查询优化**:支持创建索引,提高查询速度,并具有自动优化查询计划的能力。 7. **安全性**:提供加密功能,...

    sqlite3 not found的解决办法

    在提供的压缩包文件中,有两个名为`sqlite3`的文件,它们可能是不同版本的SQLite3二进制文件,或者是已经编译好的SQLite3库。`readme.txt`文件可能会提供关于这些文件的使用说明。在使用这些文件之前,确保它们与你...

    Python库 | bmnsqlite3-0.1.0-cp37-cp37m-macosx_10_14_x86_64.whl

    `.whl`文件是Python的wheel格式,它是Python包的二进制分发格式。当用户使用`pip`安装这个库时,`.whl`文件会直接被`pip`识别并安装,避免了编译源码的过程,这对于那些依赖于特定系统库或者硬件架构的包来说尤其...

    sqlite3使用总结

    以上是SQLite3的基本使用方法和常见操作,实际应用中可能需要结合具体需求和编程语言(如Python、Java等)的SQLite3库进行更复杂的操作。通过学习和实践,你可以熟练掌握SQLite3,并在各种项目中有效利用它的功能。

    sqlite3本地安装

    1. **下载**:访问SQLite官方网站(https://www.sqlite.org/download.html),找到预编译的SQLite3二进制文件,下载适用于你的系统的版本。 2. **解压**:解压缩下载的文件,通常会得到`sqlite3.exe`可执行文件。 3....

    sqlite3 for windows

    "Precompiled Binaries for Windows" 表示这是一个专门为 Windows 用户提供的预编译二进制版本,允许用户在 Windows 环境下快速部署和使用 SQLite3。 SQLite3 的主要特点包括: 1. **轻量级**:SQLite3 数据库文件...

    SQLite3 Tool and Browser3(含Windows和Mac)

    SQLite3支持ACID事务,确保了数据的一致性和完整性,同时,它也支持多种数据类型,包括文本、数值、日期时间以及BLOB(二进制大对象)。 在实际开发中,SQLite3常被用作应用的本地数据库,特别是在那些不需要大量...

    Sqlite3 Expert

    列定义数据类型,如整数、浮点数、文本或二进制数据。行是数据实例。 2. SQL支持:SQLite3完全支持SQL语言,包括SELECT、INSERT、UPDATE、DELETE、CREATE TABLE、ALTER TABLE、DROP TABLE等基本语句,以及JOIN、...

    将图片保存到数据库!

    综上所述,将图片保存到数据库涉及读取图片、转换为二进制数据、创建数据库表、插入数据、以及检索和显示数据等多个步骤。在不同的数据库系统和编程环境中,具体操作会有细微差别,但基本流程保持一致。对于Access而...

    windows10安装sqlite,配置全局环境变量

    - 保存更改后,打开命令提示符窗口,输入`sqlite3`,如果安装和配置正确,你应该能看到SQLite的命令行提示符,如下所示: ``` SQLite version X.Y.Z Enter ".help" for usage hints. Connected to a transient ...

Global site tag (gtag.js) - Google Analytics