直接在Python中重新创建Postgres副本?
我有一个数据块,目前是一个n元组列表,但格式非常灵活,我想将其附加到Postgres表中——在本例中,每个n元组对应于数据库中的一行直接在Python中重新创建Postgres副本?,python,postgresql,psycopg2,Python,Postgresql,Psycopg2,我有一个数据块,目前是一个n元组列表,但格式非常灵活,我想将其附加到Postgres表中——在本例中,每个n元组对应于数据库中的一行 到目前为止,我一直在做的是将所有这些内容写入CSV文件,然后使用postgres的副本将所有这些内容批量加载到数据库中。这是可行的,但不是最理想的,我更希望能够直接从python完成这一切。python中是否有复制Postgres中复制类型大容量加载的方法?如果您使用的是psycopg2驱动程序,游标提供了一个COPY_to和COPY_from函数,可以从任何类似
到目前为止,我一直在做的是将所有这些内容写入CSV文件,然后使用postgres的副本将所有这些内容批量加载到数据库中。这是可行的,但不是最理想的,我更希望能够直接从python完成这一切。python中是否有复制Postgres中复制类型大容量加载的方法?如果您使用的是psycopg2驱动程序,游标提供了一个
COPY_to
和COPY_from
函数,可以从任何类似文件的对象(包括StringIO
缓冲区)读取
文件中有一些示例,这些示例随附
本节选自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')
我的荣幸。。。如果它对你有效,不要忘记点击接受按钮来获得这个答案。我注意到您尚未接受其他问题的任何答案,但“接受”复选标记可帮助有相同问题的其他人一眼就知道哪个答案为您解决了问题。请修改此选项以包括布尔值和数组,因为它们似乎不适用于我!