python - 使用 psycopg3 在服务器之间复制表

标签 python postgresql psycopg2 psycopg3

我正在使用 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),此错误仍然存​​在。

有办法解决这个memoryview错误吗?

最佳答案

猜测您正在使用 psycopg3 <= 3.0.11。此问题已在 3.0.12 中修复(每 Release Notes) 。我在 3.0.11 中运行了代码,但如您所示,它失败了。我升级到 3.0.13 并且成功了。

关于python - 使用 psycopg3 在服务器之间复制表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72233481/

相关文章:

ruby-on-rails - 在 jsonb 字段上添加索引

sql - 在不使用子查询的情况下从同一个表中的正则表达式匹配更新

python - Flask 动态 Google map 标记(python、postgres、psycopg2)

python - 与python全局变量混淆,pygame事件

python - PyCharm 在 Docker 中添加远程 Python 解释器

postgresql - UTF8 Postgresql Create Database Like MySQL(包括字符集、编码、lc_type)

python - 连接时出现操作错误 - Psycopg2

python - 测试 Postgres-DB 的连接

python - 如何在Eclipse中查看.py

c++ - 在 Python 中,你如何像 C++ 一样获取标记化输入?