从Postgres中读取二进制数据

#!/usr/bin/env python# -*- coding: utf-8 -*-import psycopg2import psycopg2.extrasconn_string = "host='localhost' dbname='mobile' user='zhiwei' password='zhiwei.li' port=5432"conn = psycopg2.connect(conn_string)cursor = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)cursor.execute("SELECT icon FROM applications WHERE deviceid='010203040506078'  OFFSET 0 LIMIT 1;")icon  = cursor.fetchone()open('p.png', 'wb').write(str(icon[0]))

注意,读出来的数据,用str做强制转换, 因为 icon[0]的类型是 buffer

请参考 http://zetcode.com/db/postgresqlpythontutorial/ 的例子

#!/usr/bin/python# -*- coding: utf-8 -*-import psycopg2import sysdef writeImage(data):    try:        fout = open('woman2.jpg','wb')        fout.write(data)    except IOError, e:        print "Error %d: %s" % (e.args[0], e.args[1])        sys.exit(1)    finally:        if fout:            fout.close()  try:    con = psycopg2.connect(database="testdb", user="janbodnar")     cur = con.cursor()    cur.execute("SELECT Data FROM images LIMIT 1")    data = cur.fetchone()[0]    writeImage(data)    con.commit()    except psycopg2.DatabaseError, e:    if con:        con.rollback()    print 'Error %s' % e    sys.exit(1)finally:    if con:        con.close()

并不需要做转换,直接就写buffer了

从Postgres中读取二进制数据

相关文章:

你感兴趣的文章:

标签云: