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进行转换后才能成功插入到数据库中。