Форум сайта python.su
Всем привет. Есть ли тут знающие как сделать дамп таблицы на python. То есть архив таблицы надо сделать.
Вот таким способом как я понял не прокатит.
text_zapros = "$ pg_dump -t имя_таблицы имя_базы > db.sql" cur = connection.conn.cursor() zapros = cur.execute(text_zapros) connection.conn.commit()
Офлайн
Офлайн
Извините, до такого надо было еще додуматься.
Вам не нужен питон для того, чтобы сделать дамп базы данных. Это делается средствами операционной системы и утилитами СУБД.
Офлайн
Ser5+Да, ты пытаешься команду для Bash выполнить вместе с долларом внутри питона. А надо команду для Bash выполнить в Bash, так ещё и доллар убрать оттуда, так как он означает, что команда выполняется с правами обычного пользователя и не требует рут-прав, в обратном случае был бы октоторп - знак # - вместо долллара.
Вот таким способом как я понял не прокатит.
Отредактировано py.user.next (Апрель 6, 2020 18:57:21)
Офлайн
Но мне нужно именно из питона.То есть на питоне обновляю данные таблицы и нужно сделать дамп этой таблицы после обновления. Через какой-то модуль можно сдампить? Через 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)
Офлайн
Млин, на дворе 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)
Офлайн
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()
Офлайн