我正在使用psycopg3文档中的示例将一个表从一个数据库复制到另一个数据库: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),则此错误仍然存在.

有没有办法解决这个错误?

推荐答案

猜测您正在使用psycopg3<;=3.0.11. 这是固定的3.0.12每Release Notes.我在3.0.11中运行了代码,但正如您所示,它失败了.我升级到了3.0.13,它成功了.

Python相关问答推荐

Odoo 14 hr. emergency.public内的二进制字段

如何检测背景有噪的图像中的正方形

沿着数组中的轴计算真实条目

在Wayland上使用setCellWidget时,try 编辑QTable Widget中的单元格时,PyQt 6崩溃

PyQt5,如何使每个对象的 colored颜色 不同?'

把一个pandas文件夹从juyter笔记本放到堆栈溢出问题中的最快方法?

形状弃用警告与组合多边形和多边形如何解决

用渐近模计算含符号的矩阵乘法

使用特定值作为引用替换数据框行上的值

将scipy. sparse矩阵直接保存为常规txt文件

在方法中设置属性值时,如何处理语句不可达[Unreacable]";的问题?

ruamel.yaml dump:如何阻止map标量值被移动到一个新的缩进行?

替换现有列名中的字符,而不创建新列

如何在Python中使用Iscolc迭代器实现观察者模式?

如何删除重复的文字翻拍?

替换包含Python DataFrame中的值的<;

将像素信息写入文件并读取该文件

EST格式的Azure数据库笔记本中的当前时间戳

在Pandas 中以十六进制显示/打印列?

如何将ManyToManyfield用于Self类