psycopg2.ProgrammingError: синтаксическая ошибка в или около "\"
У меня есть модуль Python, который копирует данные из таблицы в файл. Я использую postgresql в качестве сервера базы данных. COPY - это команда, используемая для выполнения вышеуказанного действия.
Однако в блоге ( http://grokbase.com/t/postgresql/pgsql-general/058tagtped/about-error-must-be-superuser-to-copy-to-or-from-a-file) говорится, что, Вы можете использовать \copy в '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)
do_execute - это оболочка базы данных, которая создает соединение и выполняет запрос.
1 ответ
\
это escape в строках Python, поэтому ваша строка содержит escape \c
, тем не мение \c
недопустимый escape в Python, и Python оставляет недопустимые escape-значения без изменений, поэтому "\copy"
просто \copy
, (Таким образом, ответ @ tiziano вводит в заблуждение).
>>> print "\c"
\c
Настоящая проблема в том, что \copy
это psql
команда, а не серверная команда PostgreSQL. Вы не можете использовать его с другим клиентом, кроме psql
, Вместо этого вы должны использовать psycopg2
Поддержка дляCOPY
сделать это через ваш клиентский драйвер.
У меня такие же проблемы, я признателен, если вы покажете мне, как это сделать.