Latest posts on Почему pgAdmin не видит изменения? topichttps://python.su/forum/topic/37038/2019-04-06T19:44:05+03:00Общий :: Базы данных :: Почему pgAdmin не видит изменения?
2019-04-06T19:44:05+03:00rami200555Нужно выполнить <strong>commit()</strong> после записи в базу:<br/><div class="code"><pre> <span class="k">try</span><span class="p">:</span>
<span class="n">req</span> <span class="o">=</span> <span class="s1">'INSERT INTO test_table (id, description) VALUES (</span><span class="si">%s</span><span class="s1">,</span><span class="si">%s</span><span class="s1">)'</span>
<span class="n">vals</span> <span class="o">=</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s2">"aaaa"</span><span class="p">)</span>
<span class="n">db_cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">vals</span><span class="p">);</span>
<span class="n">db_conn</span><span class="o">.</span><span class="n">commit</span><span class="p">()</span> <span class="c1">#совершить запись</span>
</pre></div>
Общий :: Базы данных :: Почему pgAdmin не видит изменения?
2019-04-06T18:57:18+03:00zlodiak200554помогите пожалуйста разобраться. установил postgres9.5, создал пользователя, БД, таблицу. из скрипта пытаюсь сделать запись в таблицу так:<br/><div class="code"><pre> <span class="ch">#!/usr/bin/env python3</span>
<span class="kn">import</span> <span class="nn">psycopg2</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">db_conn</span> <span class="o">=</span> <span class="n">psycopg2</span><span class="o">.</span><span class="n">connect</span><span class="p">(</span>
<span class="n">database</span><span class="o">=</span><span class="s1">'db_test'</span><span class="p">,</span>
<span class="n">user</span><span class="o">=</span><span class="s1">'test'</span><span class="p">,</span>
<span class="n">password</span><span class="o">=</span><span class="s1">'qwerty'</span><span class="p">,</span>
<span class="c1"># user='postgres', </span>
<span class="c1"># password='postgres', </span>
<span class="n">host</span><span class="o">=</span><span class="s1">'localhost'</span>
<span class="p">)</span>
<span class="k">except</span> <span class="ne">Exception</span> <span class="k">as</span> <span class="n">e</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s2">"error connection:"</span><span class="p">,</span> <span class="n">e</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'connection ok'</span><span class="p">)</span>
<span class="n">db_cursor</span> <span class="o">=</span> <span class="n">db_conn</span><span class="o">.</span><span class="n">cursor</span><span class="p">()</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">req</span> <span class="o">=</span> <span class="s1">'INSERT INTO test_table (id, description) VALUES (</span><span class="si">%s</span><span class="s1">,</span><span class="si">%s</span><span class="s1">)'</span>
<span class="n">vals</span> <span class="o">=</span> <span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="s2">"aaaa"</span><span class="p">)</span>
<span class="n">db_cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">vals</span><span class="p">);</span>
<span class="k">except</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'write to table error'</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'write to table ok'</span><span class="p">)</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">req</span> <span class="o">=</span> <span class="s1">'select id, description from test_table'</span>
<span class="n">db_cursor</span><span class="o">.</span><span class="n">execute</span><span class="p">(</span><span class="n">req</span><span class="p">);</span>
<span class="k">except</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'write to table error'</span><span class="p">)</span>
<span class="k">else</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'get from table ok'</span><span class="p">)</span>
<span class="n">rows</span> <span class="o">=</span> <span class="n">db_cursor</span><span class="o">.</span><span class="n">fetchall</span><span class="p">()</span>
<span class="k">for</span> <span class="n">r</span> <span class="ow">in</span> <span class="n">rows</span><span class="p">:</span>
<span class="k">print</span><span class="p">(</span><span class="s1">'___'</span><span class="p">,</span> <span class="n">r</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">r</span><span class="p">[</span><span class="mi">1</span><span class="p">])</span>
<span class="n">db_cursor</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
<span class="n">db_conn</span><span class="o">.</span><span class="n">close</span><span class="p">()</span>
</pre></div><br/><br/>в результате через консоль вижу, что запись прошла успешно:<br/><div class="code"><pre> kalinin@lenovo ~/python/joba_finder $ python3 ./test.py
connection ok
write to table ok
get from table ok
___ <span class="m">1</span> qwqwqwddd
___ <span class="m">3</span> aaaa
</pre></div><br/>но после этого я захожу в postgres через консоль и вижу, что в таблице только 1 одна запись. то есть получается, что записать в таблицу у меня не получилось:<br/><br/><div class="code"><pre> kalinin@lenovo ~/python/joba_finder $ sudo -u postgres psql
psql <span class="o">(</span><span class="m">9</span>.5.16<span class="o">)</span>
Type <span class="s2">"help"</span> <span class="k">for</span> help.
<span class="nv">postgres</span><span class="o">=</span><span class="c1"># \c db_test</span>
You are now connected to database <span class="s2">"db_test"</span> as user <span class="s2">"postgres"</span>.
<span class="nv">db_test</span><span class="o">=</span><span class="c1"># \dt</span>
List of relations
Schema <span class="p">|</span> Name <span class="p">|</span> Type <span class="p">|</span> Owner
--------+------------+-------+-------
public <span class="p">|</span> test_table <span class="p">|</span> table <span class="p">|</span> <span class="nb">test</span>
<span class="o">(</span><span class="m">1</span> row<span class="o">)</span>
<span class="nv">db_test</span><span class="o">=</span><span class="c1"># select * from test_table;</span>
id <span class="p">|</span> description
----+-------------
<span class="m">1</span> <span class="p">|</span> qwqwqwddd
<span class="o">(</span><span class="m">1</span> row<span class="o">)</span>
</pre></div><br/><br/>pgAdmin3 тоже показывает, что таблица имеет только одну запись: <a href="http://i.yapx.ru/D29zK.png">http://i.yapx.ru/D29zK.png</a><br/><br/>скажите пожалуйста в чём я ошибся? как мне всё таки записать в таблицу значения?