Python如何向SQLServer存储二进制图片
程序员文章站
2023-11-14 18:55:11
需求是需要用python往 sqlserver中的image类型字段中插入二进制图片核心代码,研究好几个小时的代码:安装pywin32,adodbapiimage_url = "图片链接"try:...
需求是需要用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 "图片下载成功" with open(local_filename, 'wb') as f: for chunk in image_result.iter_content(chunk_size=1024): if chunk: # filter out keep-alive new chunks 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; initial catalog=%s; data source=%s; user id=%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 = " insert into docimages (docid,docimageid,purpose) values (%s,'%s','%s') " % (int(docid), int(docimageid), 'doclogo') # print sql6 cursor.execute(sql6) conn.commit() #插入图片 cursor.execute('update docimages set img=? where docimageid= ? ',(adodbapi.binary(b), docimageid,)) conn.commit() print "图片保存成功" 先插入相关信息,再去update图片到数据库里面。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。