论坛首页 编程语言技术论坛

Python保存二进制数据到sqlite3

浏览 11453 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-07-10   最后修改:2009-07-16

我们有这样一个需求:要保存二进制文件到数据库,以后还要从数据库读出来使用。到网上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的文章

   发表时间:2009-07-14  
你这个代码语法都有问题 还好意思往上贴 晕死
12: Warning: 'with' will become a reserved keyword in Python 2.6
0 请登录后投票
   发表时间:2009-07-14   最后修改:2009-07-14
vb2005xu 写道
你这个代码语法都有问题 还好意思往上贴 晕死
12: Warning: 'with' will become a reserved keyword in Python 2.6

 

 拜托你看清楚点,我上面的注释里写了是用的Python2.6.2。而且你的警告里也说明了'with'在Python2.6里将是个关键字,如果你用的是Python2.5,那么请在导入语句的开头写上: from __future__ import with_statement

0 请登录后投票
   发表时间:2009-07-15  
即使加上了 你这段代码还是运行不了,14行出问题
0 请登录后投票
   发表时间:2009-07-15  
兄台的代码写的不错~但是有个小问题就是~不用没执行一次insert就commit()提交一次, 可以执行完多个insert后一次性提交, 这样数据库的压力也小.
0 请登录后投票
   发表时间:2009-07-15  
vb2005xu 写道
即使加上了 你这段代码还是运行不了,14行出问题

可否贴出是什么错误?
0 请登录后投票
   发表时间:2009-07-16  
E:\Python25\turbogears1.0.7\tgprj\hello>python tsqlite.py
  File "tsqlite.py", line 14
    db.commit()
     ^
SyntaxError: invalid syntax
0 请登录后投票
   发表时间:2009-07-16  
vb2005xu 写道
E:\Python25\turbogears1.0.7\tgprj\hello>python tsqlite.py
  File "tsqlite.py", line 14
    db.commit()
     ^
SyntaxError: invalid syntax


是否是缩进错误呢?
0 请登录后投票
   发表时间: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行漏掉了一个右括号。
0 请登录后投票
   发表时间: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写的程序.
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics