我正在使用psycopg3文档中的示例将表从一个数据库复制到另一个数据库:链接
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错误吗?
发布于 2022-05-13 19:21:01
猜测您使用的是psycopg3 <= 3.0.11。这是固定在3.0.12每发行说明。我在3.0.11中运行了代码,如您所示,它失败了。我升级到3.0.13,它成功了。
https://stackoverflow.com/questions/72233481
复制相似问题