psycopg2.ProgrammingError:“ \”处或附近的语法错误

问题描述 投票:5回答:2

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

但是,在博客(http://grokbase.com/t/postgresql/pgsql-general/058tagtped/about-error-must-be-superuser-to-copy-to-or-from-a-file)中指出,可以在客户端的'psql'中使用\ copy,但是出于安全原因,您必须是超级用户才能在服务器端进行COPY。所以我用\ copy命令。当我尝试执行以下方法时,将导致错误,显示为>

psycopg2.ProgrammingError:“ \” LINE 1:或附近的语法错误:>

我找不到为什么会抛出错误。有人可以帮我吗?

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模块,它将数据从表复制到文件中。我使用PostgreSQL作为数据库服务器。 COPY是用于执行上述操作的命令。但是在博客(http://grokbase.com / ...

python postgresql
2个回答
6
投票

\是Python字符串中的转义符,因此您的字符串包含转义符\c。但是\c在Python中是无效的转义符,而Python则使无效的转义符保持不变,因此"\copy"只是\copy。 (因此@tiziano的答案具有误导性。)>

>>> print "\c"
\c

真正的问题是\copypsql命令,而不是服务器端PostgreSQL命令。除psql以外,不能与其他客户端一起使用。您必须改为使用the psycopg2 support for COPY通过客户端驱动程序来进行此操作。


0
投票

我遇到同样的问题,如果您能向我展示如何操作,我将不胜感激。

© www.soinside.com 2019 - 2024. All rights reserved.