使用 psycopg3 跨服务器复制 table
copying a table across servers with psycopg3
我正在使用 psycopg3 文档中的示例将 table 从一个数据库复制到另一个数据库:link
dsn_src = 'postgresql:///dev_db'
dsn_tgt = 'postgresql:///prod_test'
with psycopg.connect(dsn_src) as conn1, psycopg.connect(dsn_tgt) as conn2:
with conn1.cursor().copy("COPY sample TO STDOUT (FORMAT BINARY)") as copy1:
with conn2.cursor().copy("COPY sample FROM STDIN (FORMAT BINARY)") as copy2:
for data in copy1:
copy2.write(data)
运行 这会导致以下错误
QueryCanceled: COPY from stdin failed: error from Python: TypeError - can't write memoryview
CONTEXT: COPY sample, line 1
源架构和目标架构相同,正如文档所建议的那样,如果删除格式规范 (FORMAT BINARY)
,此错误仍然存在。
有没有办法解决这个 memoryview
错误?
猜测您使用的是 psycopg3
<= 3.0.11。这已在每个 Release Notes 的 3.0.12 中修复。我 运行 3.0.11 中的代码,但如您所见,它失败了。我升级到 3.0.13 并且有效。
我正在使用 psycopg3 文档中的示例将 table 从一个数据库复制到另一个数据库:link
dsn_src = 'postgresql:///dev_db'
dsn_tgt = 'postgresql:///prod_test'
with psycopg.connect(dsn_src) as conn1, psycopg.connect(dsn_tgt) as conn2:
with conn1.cursor().copy("COPY sample TO STDOUT (FORMAT BINARY)") as copy1:
with conn2.cursor().copy("COPY sample FROM STDIN (FORMAT BINARY)") as copy2:
for data in copy1:
copy2.write(data)
运行 这会导致以下错误
QueryCanceled: COPY from stdin failed: error from Python: TypeError - can't write memoryview
CONTEXT: COPY sample, line 1
源架构和目标架构相同,正如文档所建议的那样,如果删除格式规范 (FORMAT BINARY)
,此错误仍然存在。
有没有办法解决这个 memoryview
错误?
猜测您使用的是 psycopg3
<= 3.0.11。这已在每个 Release Notes 的 3.0.12 中修复。我 运行 3.0.11 中的代码,但如您所见,它失败了。我升级到 3.0.13 并且有效。