Python psycopg2.ProgrammingError:语法错误位于或接近\&引用;

Python psycopg2.ProgrammingError:语法错误位于或接近\&引用;,python,postgresql,Python,Postgresql,我有一个python模块,它将数据从表复制到文件。我使用postgresql作为数据库服务器。复制是用于执行上述操作的命令 但是在blog()中,它指出,您可以在客户端的“psql”中使用\copy,但出于安全原因,您必须是超级用户才能在服务器端进行复制。所以我使用了\copy命令。当我尝试执行下面的方法时,它会导致如下错误 psycopg2.ProgrammingError:在“\”行或其附近出现语法错误1:\copy 我找不出它为什么会出错。有人能帮我吗 def process():

我有一个python模块,它将数据从表复制到文件。我使用postgresql作为数据库服务器。复制是用于执行上述操作的命令

但是在blog()中,它指出,您可以在客户端的“psql”中使用\copy,但出于安全原因,您必须是超级用户才能在服务器端进行复制。所以我使用了\copy命令。当我尝试执行下面的方法时,它会导致如下错误

psycopg2.ProgrammingError:在“\”行或其附近出现语法错误1:\copy

我找不出它为什么会出错。有人能帮我吗

def process():
     query="\copy %s TO %s"%('test_table', 'test_file.txt')

     @env.with_transaction()
     def do_execute(db):
         cursor = db.cursor()
         cursor.execute(query)
do_execute是一个数据库包装器,它创建连接和 执行查询


\
是Python字符串中的转义,因此您的字符串包含转义
\c
。然而,
\c
在Python中是一个无效的转义,Python保持无效转义不变,因此
“\copy”
只是
\copy
。(因此@tiziano的回答是误导性的)


真正的问题是
\copy
是一个
psql
命令,而不是服务器端的PostgreSQL命令。除了
psql
之外,您不能将其用于其他客户端。您必须改用通过客户端驱动程序执行此操作。

\copy
是一个仅由
psql
命令行工具识别的命令。它不是有效的SQL。命令行工具很可能使用多个SQL构造来实现该命令,以加载数据,然后将其导出到文本文件。对于该有效SQL,您可以在相同的页面状态中找到它:如果您不使用“psql”,并且您的客户端库支持它,您可以使用“从stdin复制”并通过客户端连接传递数据。可能重复@MartijnPieters,谢谢。@Craig。。谢谢你的解释。我进行了更改并使脚本成功运行
>>> print "\c"
\c