#!/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中读取二进制数据, 感谢原作者分享。 相信成功的信念比成功本身更重要,