Python的一个相对的菜鸟,我已经使用以下代码成功地从PostgreSQL bytea字段中包含一个zip文件中的文本文件:
myzip = ZipFile(StringIO(rv[0]["archivefield"]), 'a')
data = myzip.read("content.txt",'a')
# *** WORK ON content.txt HAPPENS HERE ***
然后我完成了我在该文本文件上所需的工作......到目前为止,非常好!
现在,我对语法有点困惑,将content.txt压缩回存档中的正确位置,然后写回'archivefield'。
你们这里的专家可以提出我需要的一点点语法吗?几乎就在那里!
嗯,感谢这里收到的帮助 - 我们现在肯定会写回'archivefield' - 这太好了!
现在的问题是:
1)我显然将原始字段的大小加倍。这是'追加'模式的功能吗?如何'回归零并在场上重写? - 和/或 -
2)我正在写回的数据不会编码回十六进制(?)模式,因为原始数据似乎是 - 并且将成为PostgreSQL的v9的标准。 - 或者 -
问题是数据没有被再次压缩,因此它的大小?
答案 0 :(得分:0)
strf = StringIO(rv[0]["archivefield"])
zipf = ZipFile(strf, "a")
data = myzip.read("content.txt"')
# process data, changing its value
zipf.writestr("content.txt", data)
zipf.close() # actually write contents out
然后将str.getvalue()
写回PostgreSQL数据库,覆盖rv[0]["archivefield"]
的先前值。我不能帮助你,我很害怕。