Python如何向SQLServer存储二进制图片
需求是需要用python往SqlServer中的image类型字段中插入二进制图片
核心代码,研究好几个小时的代码:
安装pywin32,adodbapi image_url="图片链接" try: image_result=session.get(url=image_url,headers=headers,stream=True) except: image_result=session.get(url=image_url,headers=headers,stream=True) local_filename=md5(image_url)+".png" print"图片下载成功" withopen(local_filename,'wb')asf: forchunkinimage_result.iter_content(chunk_size=1024): ifchunk:#filteroutkeep-alivenewchunks f.write(chunk) f.flush() f.close() #读取图片,二进制格式,注意是rb f1=open(local_filename,"rb",) b=f1.read() f1.close() #adodbapi支持插入二进制数据流 Cfg={'server':'XXXXXXX9','password':'XXXXXXX','db':'XXXXXXX'} constr="Provider=SQLOLEDB.1;InitialCatalog=%s;DataSource=%s;userID=%s;Password=%s;"%(Cfg['db'],Cfg['server'],'drc_sql',Cfg['password']) conn=adodbapi.connect(constr) cursor=conn.cursor() print"DocId",DocId #docimageid在数据表是主键 docimageid=str(DocId)+str(image_location) print"docimageid",docimageid sql6="INSERTINTOdocImages(DocId,docimageid,purpose)VALUES(%s,'%s','%s')"%(int(DocId),int(docimageid),'doclogo') #printsql6 cursor.execute(sql6) conn.commit() #插入图片 cursor.execute('updatedocImagessetImg=?wheredocimageid=?',(adodbapi.Binary(b),docimageid,)) conn.commit() print"图片保存成功" 先插入相关信息,再去update图片到数据库里面。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。