我正在使用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相关问答推荐

Django通过使用字典值过滤从数据库表返回查询集

替换 dask map_partitions 中的现有列会发出警告

围绕索引创建掩码数组的 Numpy 最快方法

创建包含特定元素的数组列表

pandas fillna 依次一步一步

为什么我定义的语法不使用标记?

创建一个由 1-90 的唯一数字组成的 M*N 矩阵

如何像我们在 pyspark withColumn 中一样在 pandas 中动态创建新列

在python中只增亮图像的黑暗区域

通过python在字典内的字典中打印数字

我正在try 堆叠、融化、grouby 或reshape Pandas DataFrame

有没有办法在默认参数之后使用所需的参数? (就像默认的python range())

AttributeError:try 在 discord.py 中创建按钮时,模块“discord”没有属性“ui”

如何进行条件合并 Pandas

二分搜索:没有得到非常大的值的上限和下限

Pandas :列的值,然后按相同的 ID 分组和合并

基于布尔值 pandas df 的高亮元素

在python中用浮点表示搜索和替换特定字符串

如何将postman 中的 JSON 格式数据发送到具有另一个模型的外键的 django 模型?

从 2D numpy 数组中提取多组行/列