测试数据库名称Test
测试表格名称Person
字段Id:类型uniqueidentifier,默认值:newId()
字段Name:类型nvarchar(500)
字段Photo:类型varbinary(MAX)数据库
#导入QtSql模块 from PyQt5.QtSql import QSqlDatabase, QSqlQuery from PyQt5.QtCore import QIODevice from PyQt5.QtGui import QImage #建立数据库链接并打开(未指定数据库名,建立默认链接) db = QSqlDatabase.addDatabase("QODBC") db.setDatabaseName("Driver={Sql Server};Server=localhost;Database=TEST;Uid=sa;Pwd=123456") db.open() #建立查询对象(使用默认数据库链接) query = QSqlQuery() #插入记录并返回新记录Id值 query.exec("INSERT INTO Person(Name) OUTPUT INSERTED.Id VALUES('Tom')") query.next() NewId = query.value("Id") #删除记录,使用"?"操做符绑定值 query.prepare("DELETE FROM Person WHERE Name=?") query.bindValue(0,"Tom") query.exec_() #此处调用exec_() #将图片保存到数据库,使用冒号占位符 query.prepare("INSERT INTO Person(Name,Photo) VALUES(:N, :P)") imagebytes = QByteArray() buffer = QBuffer(imagebytes) buffer.open(QIODevice.WriteOnly) image = QImage(r"d:\test.jpg") image.save(buffer,"JPG") buffer.close() query.bindValue(":N","张三") query.bindValue(":P",imagebytes) query.exec_() #从数据库载入图片 query.prepare("SELECT Photo FROM Person WHERE Name=:Nm") query.bindValue(":Nm","张三") query.exec_() query.next() imagebytes = query.value("Photo") buffer = QBuffer(imagebytes) buffer.open(QIODevice.ReadOnly) image = QImage() image.load(buffer,"JPG") buffer.close()