我有一个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字符串中的转义符,因此您的字符串包含转义符\c
。但是\c
在Python中是无效的转义符,而Python则使无效的转义符保持不变,因此"\copy"
只是\copy
。 (因此@tiziano的答案具有误导性。)>
>>> print "\c" \c
真正的问题是
\copy
是psql
命令,而不是服务器端PostgreSQL命令。除psql
以外,不能与其他客户端一起使用。您必须改为使用thepsycopg2
support forCOPY
通过客户端驱动程序来进行此操作。
我遇到同样的问题,如果您能向我展示如何操作,我将不胜感激。