我有一个python模块,它将数据从表复制到文件.我使用postgresql作为数据库服务器.COPY是用于执行上述操作的命令.
然而,在博客(http://grokbase.com/t/postgresql/pgsql-general/058tagtped/about-error-must-be-superuser-to-copy-to-or-from-a-file)中,它表明,您可以在客户端使用\ copy in'psql',但出于安全原因,您必须是超级用户才能在服务器端执行COPY.所以我使用了\ copy命令.当我尝试执行以下方法时,会导致错误
psycopg2.ProgrammingError:"\"LINE 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)
Run Code Online (Sandbox Code Playgroud)
do_execute是一个数据库包装器,它创建连接并执行查询.
\是Python字符串中的转义,因此您的字符串包含转义\c.然而,\c在Python中是一个无效的转义,并且Python保留了无效的转义,所以"\copy"只是\copy.(因此@ tiziano的回答是误导性的).
>>> print "\c"
\c
Run Code Online (Sandbox Code Playgroud)
真正的问题是它\copy是一个psql命令,而不是服务器端的PostgreSQL命令.您不能将其用于除以外的客户端psql.您必须改用了psycopg2支持COPY通过客户端驱动程序来做到这一点.
| 归档时间: |
|
| 查看次数: |
8582 次 |
| 最近记录: |