postgresql学习记录3
某些情况下需要向数据库中插入媒体文件,mysql中插入媒体文件时,数据字段应该是blob。而对于postgresql,则是bytea。这里注意的是打开文件时候应该用"rb wb"这种模式,示例如下:
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进行转换后才能成功插入到数据库中。