创建一个保存图片的信息表
db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
db.setDatabaseName('user.db')
db.open()
query = QSqlQuery()
if not query.exec_("create table img(id integer primary key autoincrement,userName TEXT, imgName TEXT,time TEXT,place TEXT,author TEXT,imgType TEXT,imgDesc TEXT,image blob)"):
print( query.lastError().text())
else:
print('创建成功')
将opencv图片转换为二进制存入sqllite
sql_code = "select * from img where imgName='{}'".format(imgName)
query.exec_(sql_code)
if query.next():
QMessageBox.information(self, "提示", "图片已存在!", QMessageBox.Yes)
return 0
success, encoded_image = cv2.imencode('.png', self.img)
content = encoded_image.tobytes()
query.prepare("insert into img (userName,imgName,time,place,author,imgType,imgDesc,image) values(?,?,?,?,?,?,?,?)")
query.addBindValue(self.username)
query.addBindValue(imgName)
query.addBindValue(time)
query.addBindValue(place)
query.addBindValue(author)
query.addBindValue(imgType)
query.addBindValue(imgDesc)
query.addBindValue(content)
if not query.exec():
QMessageBox.warning(self, '提交失败', '请确定不包含特殊字符!'+query.lastError().text(), QMessageBox.Ok)
return
QMessageBox.information(self, "提示", "上传成功!", QMessageBox.Yes)
对图像进行查询
sql_code = 'select image from img where userName=="%{}%" and (imgName like "%{}%" or time like "%{}%" or place like "%{}%" or imgDesc like "%{}%" or author like "%{}%" or imgType like "%{}%")'.format(self.username,keyword,keyword,keyword,keyword,keyword,keyword)
query.exec_(sql_code)
while query.next():
img = np.frombuffer(query.value(0).tobytes())