最近工作上需要,把一些报销凭证保存,本来是建个目录保存,后来想用SQLITE 保存,比较方便查找
网上查了些资料,自己整理如下:`
Sqlite的BLOB类型对应于QT的QByteArray类型。想将数据以二进制的形式存储在Sqlite中,则需要先将数据转成QByteArray。
**
从JPG文件写入BLOB 代码如下:
**
with open(“xxxx.jpg","rb") as f:
img = f.read()
ba = QByteArray()
bf = QBuffer(ba)
bf.open(QIODevice.WriteOnly)
bf.write(img)
# 这里 data 是BLOB 类型,type 数据类型,我想以后加入PDF,或其它文件
sql = "insert into voucher (type,data) values('JPG',:pic)"
self.query.prepare(sql)
self.query.bindValue(":pic", ba )
self.query.exec()
BLOB到 Qpixmap
sql = "select data from voucher where ID= ? "
# key 是关键字
query = QSqlQuery()
query.prepare(sql)
query.bindValue(0, key)
query.exec_()
query.first()
ba = QByteArray()
ba.append(query.value(0))
bf = QBuffer(ba)
bf.open(QIODevice.ReadOnly)
imgreader = QImageReader(bf)
img = QImage(imgreader.read())
pix = QPixmap(img)