Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > как через SQLObject или psycopg сделать dump базы


Автор: pythonwin 15.6.2006, 14:47
Всем доброго времени суток!

Можете помочь?

как через SQLObject или psycopg сделать dump базы PostgreSQL? 

Автор: J2A 15.6.2006, 15:27
а Python при чем? Если PostgreSQL умеет (а, AFAIR, не умеет) делать дамп по SQL-запросу/вызову хранимой функции, то так же как и любой другой SQL-запрос.

AFAIK, сделать можно только через pg_dump, его вполне можно из Python-программы вызвать. 

Автор: pythonwin 15.6.2006, 15:51
Можно сделать так:
Код

import os
user="postgres"
db="DBNAME"
filename="/%s.sql"%db
os.system("pg_dump --username=%s %s --file=%s"%(user, db, filename))

Но вот туд и начинается самое интересное - выходит сообщение: 
Код

Password:


Где нужно ввести пароль руками, а это уже слабо тянет на автоматизацию

И еще один момент - я не хочу зависеть от:
1) прописан ли путь к pg_dump.exe
2) И не хочу цепляться к путям, типа "C:\program files\postgresql\"...

OS - WinXP SP2
postgresql-8.0.4 

Автор: dvska 16.6.2006, 16:51
> не желатьльно использовать команду
> pg_dump.exe

> Можно сделать так:

> import os
> user="postgres"
> db="DBNAME"
> filename="/%s.sql"%db
> os.system("pg_dump --username=%s %s --file=%s"%(user, db, filename))

> Но вот туд и начинается самое
> интересное - выходит сообщение:
> Password:

> Где нужно ввести пароль руками, а это
> уже слабо тянет на автоматизацию

Задай в файле  %APPDATA%\postgresql\pgpass.conf ( у меня, например, это
D:\Documents and Settings\dvs\Application Data\postgresql\pgpass.conf )
права в виде
hostname:port:database:username:password ( см.
http://www.postgresql.org/docs/8.1/interactive/libpq-pgpass.html ), и не
прописывай --username вовсе.

>И еще один момент - я не хочу зависеть от:
>  1) прописан ли путь к pg_dump.exe
> 2) И не хочу цепляться к путям, типа
> "C:\program files\postgresql\"...

Странный ты человек ;)
Прописал имя базы, имя юзера, имя файла экспорта, а путь уже не можешь. Ну
тогда добавь путь к каталогу
Program Files\PostgreSQL\8.1\bin\ в переменную окружения PATH

> OS - WinXP SP2
> postgresql-8.0.4 

Да, и обнови Postgres до последней версии.  

Автор: pythonwin 19.6.2006, 08:08
Спасибо за совет!

но файл "pgpass.conf" у меня вообще НЕТ!

Прошу указать другой файл.

PS сейчас мигрировать postgresql 8.1.x не могу.

у меня postgresql 8.0.4  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)