当前位置:  开发笔记 > 编程语言 > 正文

用Python直接重新创建Postgres COPY?

如何解决《用Python直接重新创建PostgresCOPY?》经验,为你挑选了1个好方法。

我有一个数据块,目前作为n元组的列表,但格式非常灵活,我想附加到Postgres表 - 在这种情况下,每个n元组对应于DB中的一行.

到目前为止我一直在做的是将这些全部写入CSV文件,然后使用postgres的COPY将所有这些内容加载到数据库中.这是有效的,但是不是最理想的,我更愿意直接从python中完成这一切.在python中是否有一种方法可以在Postgres中复制COPY类型的批量加载?



1> Jarret Hardi..:

如果您使用的psycopg2驱动程序,游标提供一个copy_tocopy_from功能,可以从任何类似文件的对象(包括读取StringIO缓冲).

psycopg2源代码分发附带的文件examples/copy_from.py和examples/copy_to.py中有一些示例.

摘录来自以下copy_from.py示例:

conn = psycopg2.connect(DSN)
curs = conn.cursor()
curs.execute("CREATE TABLE test_copy (fld1 text, fld2 text, fld3 int4)")

# anything can be used as a file if it has .read() and .readline() methods
data = StringIO.StringIO()
data.write('\n'.join(['Tom\tJenkins\t37',
                  'Madonna\t\N\t45',
                  'Federico\tDi Gregorio\t\N']))
data.seek(0)

curs.copy_from(data, 'test_copy')


我很高兴...如果它对你有用,别忘了点击这个答案的接受按钮.我注意到你没有接受任何其他问题的答案,但是"接受"复选标记可以帮助那些有同样问题的人一眼就知道哪个答案能够解决你的问题.
推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有