当前位置: 移动技术网 > IT编程>脚本编程>Python > Python如何向SQLServer存储二进制图片

Python如何向SQLServer存储二进制图片

2020年06月14日  | 移动技术网IT编程  | 我要评论

宇宙农民,墨坛文学,南昌皇冠国际

需求是需要用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图片到数据库里面。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网