1. 程式人生 > 程式設計 >Python如何向SQLServer儲存二進位制圖片

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,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),))
conn.commit()
print "圖片儲存成功"

先插入相關資訊,再去update圖片到資料庫裡面。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。