import pgdb

DATA = '\xff\x52\xb2'

MAKE_TABLE = "CREATE TABLE binary_escaping_bug (bin_data bytea)"
INSERT_DATA = "INSERT INTO binary_escaping_bug (bin_data) VALUES (%(data)s)"
KILL_TABLE = "DROP TABLE binary_escaping_bug"

conn_str = raw_input("Connection String = ")
print "Connecting to DB..."
conn = pgdb.connect(conn_str)
curs = conn.cursor()
print "Making table..."
curs.execute(MAKE_TABLE)
conn.commit()
try:
    print "Inserting binary data..."
    curs.execute(INSERT_DATA, {'data': pgdb.Binary(DATA)})
    conn.commit()
    print "Congratulations! No bug"
except Exception, x:
    print "BUG in pgdb version %s: %s" % (pgdb.version, x)
    conn.rollback()
print "Killing table..."
curs.execute(KILL_TABLE)
conn.commit()
print "Closing DB connection..."
curs.close()
conn.close()
