Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 6, 2020 16:19:22

Ser5+
Зарегистрирован: 2019-11-18
Сообщения: 65
Репутация: +  1  -
Профиль   Отправить e-mail  

дамп таблицы из базы postgre

Всем привет. Есть ли тут знающие как сделать дамп таблицы на python. То есть архив таблицы надо сделать.
Вот таким способом как я понял не прокатит.

 text_zapros = "$ pg_dump -t имя_таблицы имя_базы > db.sql"
cur = connection.conn.cursor()
zapros = cur.execute(text_zapros)    
connection.conn.commit()

Офлайн

#2 Апрель 6, 2020 17:37:34

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8018
Репутация: +  559  -
Профиль   Отправить e-mail  

дамп таблицы из базы postgre



Офлайн

#3 Апрель 6, 2020 17:39:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8018
Репутация: +  559  -
Профиль   Отправить e-mail  

дамп таблицы из базы postgre

Извините, до такого надо было еще додуматься.
Вам не нужен питон для того, чтобы сделать дамп базы данных. Это делается средствами операционной системы и утилитами СУБД.



Офлайн

#4 Апрель 6, 2020 18:54:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 8419
Репутация: +  756  -
Профиль   Отправить e-mail  

дамп таблицы из базы postgre

Ser5+
Вот таким способом как я понял не прокатит.
Да, ты пытаешься команду для Bash выполнить вместе с долларом внутри питона. А надо команду для Bash выполнить в Bash, так ещё и доллар убрать оттуда, так как он означает, что команда выполняется с правами обычного пользователя и не требует рут-прав, в обратном случае был бы октоторп - знак # - вместо долллара.

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



Отредактировано py.user.next (Апрель 6, 2020 18:57:21)

Офлайн

#5 Апрель 7, 2020 09:26:37

Ser5+
Зарегистрирован: 2019-11-18
Сообщения: 65
Репутация: +  1  -
Профиль   Отправить e-mail  

дамп таблицы из базы postgre

Но мне нужно именно из питона.То есть на питоне обновляю данные таблицы и нужно сделать дамп этой таблицы после обновления. Через какой-то модуль можно сдампить? Через 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+ (Апрель 7, 2020 11:14:45)

Офлайн

#6 Апрель 7, 2020 13:49:54

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

дамп таблицы из базы postgre

Млин, на дворе 21-й век, и когда люди научаться гуглом пользоваться?

https://medium.com/poka-techblog/5-different-ways-to-backup-your-postgresql-database-using-python-3f06cea4f51
https://kb.objectrocket.com/postgresql/postgres-backup-and-restore-with-python-1107
https://stackoverflow.com/questions/23732900/postgresql-database-backup-using-python



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Апрель 7, 2020 13:52:40)

Офлайн

#7 Апрель 7, 2020 14:39:09

Ser5+
Зарегистрирован: 2019-11-18
Сообщения: 65
Репутация: +  1  -
Профиль   Отправить e-mail  

дамп таблицы из базы postgre

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()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version