Latest posts on дамп таблицы из базы postgre topichttps://python.su/forum/topic/38735/2020-04-07T14:39:09+03:00Общий :: Базы данных :: дамп таблицы из базы postgre
2020-04-07T14:39:09+03:00Ser5+208922<strong>PEHDOM</strong><br/>Спасибо. Ну я так и думал,что только обычным способом дампить,типа читать и записывать в файл как и сделал.<br/><div class="code"><pre> <span class="n">cur</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">conn</span><span class="o">.</span><span class="n">cursor</span><span class="p">()</span>
<span class="n">text_zapros</span> <span class="o">=</span> <span class="s2">"SELECT * FROM имя_табл"</span>
<span class="n">zapros</span> <span class="o">=</span> <span class="n">cur</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="n">text_zapros</span><span class="p">)</span>
<span class="n">f5</span> <span class="o">=</span> <span class="nb">open</span><span class="p">(</span><span class="s1">'db.sql'</span><span class="p">,</span><span class="s1">'w'</span><span class="p">)</span>
<span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">cur</span><span class="p">:</span>
<span class="n">f5</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="s2">"insert into имя_табл values ("</span> <span class="o">+</span> <span class="nb">str</span><span class="p">(</span><span class="n">row</span><span class="p">)</span> <span class="o">+</span> <span class="s2">");"</span><span class="p">)</span>
<span class="n">connection</span><span class="o">.</span><span class="n">conn</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
<span class="n">f5</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
</pre></div>
Общий :: Базы данных :: дамп таблицы из базы postgre
2020-04-07T13:49:54+03:00PEHDOM208919Млин, на дворе 21-й век, и когда люди научаться гуглом пользоваться?<br/><br/><a href="https://medium.com/poka-techblog/5-different-ways-to-backup-your-postgresql-database-using-python-3f06cea4f51">https://medium.com/poka-techblog/5-different-ways-to-backup-your-postgresql-database-using-python-3f06cea4f51</a><br/><a href="https://kb.objectrocket.com/postgresql/postgres-backup-and-restore-with-python-1107">https://kb.objectrocket.com/postgresql/postgres-backup-and-restore-with-python-1107</a><br/><a href="https://stackoverflow.com/questions/23732900/postgresql-database-backup-using-python">https://stackoverflow.com/questions/23732900/postgresql-database-backup-using-python</a>
Общий :: Базы данных :: дамп таблицы из базы postgre
2020-04-07T09:26:37+03:00Ser5+208914Но мне нужно именно из питона.То есть на питоне обновляю данные таблицы и нужно сделать дамп этой таблицы после обновления. Через какой-то модуль можно сдампить? Через os?<br/><br/>Как то так,но он пустой файл создает. Вместо имя_табл реальное имя таблицы. Наверно не хватает еще соединения,но не знаю куда вставить,отсюда пустой файл создается.<br/><div class="code"><pre> <span class="n">command</span> <span class="o">=</span> <span class="s2">"pg_dump -t имя_табл > db.sql"</span>
<span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="n">command</span><span class="p">)</span>
</pre></div><br/>Пробовал вот так с соединением. Тоже пустой файл создается. <br/><div class="code"><pre> <span class="n">command</span> <span class="o">=</span> <span class="s2">"PostgreSQL Unicode --host 192.168.1.150 --port 5432 -U postgres -u admin -p 123 pg_dump -t qr_prih > db.sql"</span>
<span class="n">os</span><span class="o">.</span><span class="n">system</span><span class="p">(</span><span class="n">command</span><span class="p">)</span>
</pre></div>
Общий :: Базы данных :: дамп таблицы из базы postgre
2020-04-06T18:54:42+03:00py.user.next208903<blockquote><em>Ser5+</em><br/>Вот таким способом как я понял не прокатит.</blockquote>Да, ты пытаешься команду для Bash выполнить вместе с долларом внутри питона. А надо команду для Bash выполнить в Bash, так ещё и доллар убрать оттуда, так как он означает, что команда выполняется с правами обычного пользователя и не требует рут-прав, в обратном случае был бы октоторп - знак # - вместо долллара.<br/><br/>Может, в питоне и можно сдампить в таком виде, но чаще всего именно снаружи (из операционной системы) дампится всё. Хотя может и потребоваться какая-то сложная логика при дампе и операционная система будет не так удобна, чтобы реализовать эту логику. Но думаю, когда ты дойдёшь до сложных логик, ты не будешь делать таких примитивных ошибок, как в этом случае.
Общий :: Базы данных :: дамп таблицы из базы postgre
2020-04-06T17:39:11+03:00FishHook208899Извините, до такого надо было еще додуматься.<br/>Вам не нужен питон для того, чтобы сделать дамп базы данных. Это делается средствами операционной системы и утилитами СУБД.
Общий :: Базы данных :: дамп таблицы из базы postgre
2020-04-06T17:37:34+03:00FishHook208898<img src="https://vgif.ru/gifs/vgif-ru-Hyzg4Dm.gif"></img>
Общий :: Базы данных :: дамп таблицы из базы postgre
2020-04-06T16:19:22+03:00Ser5+208889Всем привет. Есть ли тут знающие как сделать дамп таблицы на python. То есть архив таблицы надо сделать.<br/>Вот таким способом как я понял не прокатит.<br/><div class="code"><pre> <span class="n">text_zapros</span> <span class="o">=</span> <span class="s2">"$ pg_dump -t имя_таблицы имя_базы > db.sql"</span>
<span class="n">cur</span> <span class="o">=</span> <span class="n">connection</span><span class="o">.</span><span class="n">conn</span><span class="o">.</span><span class="n">cursor</span><span class="p">()</span>
<span class="n">zapros</span> <span class="o">=</span> <span class="n">cur</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="n">text_zapros</span><span class="p">)</span>
<span class="n">connection</span><span class="o">.</span><span class="n">conn</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span>
</pre></div>