Re: psycopg2 open file for reading

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: psycopg2 open file for reading
Дата
Msg-id 5630E9A5.2010409@aklaver.com
обсуждение исходный текст
Ответ на Re: psycopg2 open file for reading  (Dan Sawyer <dansawyer@earthlink.net>)
Список psycopg
On 10/28/2015 08:25 AM, Dan Sawyer wrote:
> Yes. That is what is producing the errors. The pertinent lines are:
>
>          conn = psycopg2.connect(conn_string)
>          cursoro = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
>              ... processing python code
>              ... creates test.txt
>              ... closes test.txt
>          f = open("/tmp/test.txt","r")
>          copy_string = 'copy temp_tbl from '/tmp/test.txt' csv delimiter
> '|';'
>          cursoro.copy_expert(copy_string, file)
>
> Is a cursor the wrong way to reference copy_expert ?

No, but this:

'copy temp_tbl from '/tmp/test.txt'

needs to be:

'copy temp_tbl from FROM STDIN'

See:

http://initd.org/psycopg/docs/cursor.html#cursor.copy_expert
>
> On 10/28/2015 08:06 AM, Shulgin, Oleksandr wrote:
>> On Wed, Oct 28, 2015 at 4:04 PM, Dan Sawyer <dansawyer@earthlink.net
>> <mailto:dansawyer@earthlink.net>> wrote:
>>
>>     The file open command is:
>>
>>             f = open("/tmp/test.txt","r")
>>
>>     Is this correct? Is the read method syntax correct
>>
>>
>> Well, it looks correct.  Do you get any errors with that?
>>
>>     On 10/28/2015 07:42 AM, Shulgin, Oleksandr wrote:
>>>     On Wed, Oct 28, 2015 at 3:35 PM, Adrian Klaver
>>>     <adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>> wrote:
>>>
>>>
>>>         The cheat is to read the on disk file and write it into an in
>>>         memory file and then use that with STDIN. Something like:
>>>
>>>         sql_copy = "COPY " + self.pg_tbl_name
>>>         sql_copy += " FROM STDIN WITH CSV DELIMITER '\t'"
>>>         cur_copy.copy_expert(sql_copy, mem_file)
>>>
>>>
>>>     And you don't actually need a "memory file", any object
>>>     implementing "read" method, such as a normal fie object should
>>>     just work:
>>>
>>>     file=open('1.txt', 'r')
>>>     cur_copy.copy_expert(sql_copy, file)
>>>
>>>     --
>>>     Alex
>>
>>
>


--
Adrian Klaver
adrian.klaver@aklaver.com


В списке psycopg по дате отправления:

Предыдущее
От: Dan Sawyer
Дата:
Сообщение: Re: psycopg2 open file for reading
Следующее
От: Adrian Klaver
Дата:
Сообщение: Re: psycopg2 open file for reading