某些情况下需要向数据库中插入媒体文件,mysql中插入媒体文件时,数据字段应该是blob。而对于postgresql,则是bytea。这里注意的是打开文件时候应该用”rb wb”这种模式,示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import psycopg2
#省略部分代码...
def ins_pictures(self, name, position, explain, href, uploaddate, img, show_id):
'''向pictures表中插入数据(显示位置,说明,上传时间,图片的2进制)
'''
strs = r"insert into pictures(p_name,p_position,p_explain,p_href,p_uploaddate,p_show,p_img,show_id) values (%(name)s,%(position)s,%(explain)s,%(href)s,%(uploaddate)s,'0',%(img)s,%(show_id)s)"
self.curs.execute(strs, {'name': name,
    'position': position,
    'explain': explain,
    'href': href,
    'uploaddate': uploaddate,
    'img': psycopg2.Binary(img),
    'show_id': show_id,
   })
self.conn.commit()

这里需要注意使用Binary进行转换后才能成功插入到数据库中。