Найти - Пользователи
Полная версия: дамп таблицы из базы postgre
Начало » Базы данных » дамп таблицы из базы postgre
1
Ser5+
Всем привет. Есть ли тут знающие как сделать дамп таблицы на python. То есть архив таблицы надо сделать.
Вот таким способом как я понял не прокатит.
 text_zapros = "$ pg_dump -t имя_таблицы имя_базы > db.sql"
cur = connection.conn.cursor()
zapros = cur.execute(text_zapros)    
connection.conn.commit()
FishHook
FishHook
Извините, до такого надо было еще додуматься.
Вам не нужен питон для того, чтобы сделать дамп базы данных. Это делается средствами операционной системы и утилитами СУБД.
py.user.next
Ser5+
Вот таким способом как я понял не прокатит.
Да, ты пытаешься команду для Bash выполнить вместе с долларом внутри питона. А надо команду для Bash выполнить в Bash, так ещё и доллар убрать оттуда, так как он означает, что команда выполняется с правами обычного пользователя и не требует рут-прав, в обратном случае был бы октоторп - знак # - вместо долллара.

Может, в питоне и можно сдампить в таком виде, но чаще всего именно снаружи (из операционной системы) дампится всё. Хотя может и потребоваться какая-то сложная логика при дампе и операционная система будет не так удобна, чтобы реализовать эту логику. Но думаю, когда ты дойдёшь до сложных логик, ты не будешь делать таких примитивных ошибок, как в этом случае.
Ser5+
Но мне нужно именно из питона.То есть на питоне обновляю данные таблицы и нужно сделать дамп этой таблицы после обновления. Через какой-то модуль можно сдампить? Через os?

Как то так,но он пустой файл создает. Вместо имя_табл реальное имя таблицы. Наверно не хватает еще соединения,но не знаю куда вставить,отсюда пустой файл создается.
 command = "pg_dump -t имя_табл > db.sql"
os.system(command)

Пробовал вот так с соединением. Тоже пустой файл создается.
 command = "PostgreSQL Unicode --host 192.168.1.150 --port 5432 -U postgres -u admin -p 123 pg_dump -t qr_prih > db.sql"
os.system(command)
Ser5+
PEHDOM
Спасибо. Ну я так и думал,что только обычным способом дампить,типа читать и записывать в файл как и сделал.
  cur = connection.conn.cursor()
text_zapros = "SELECT * FROM имя_табл"
zapros = cur.execute(text_zapros)
f5 = open('db.sql','w')
for row in cur:
     f5.write("insert into имя_табл values (" + str(row) + ");")
connection.conn.commit()
f5.close()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB