Update table postgresql python

Update table postgresql python

Рассмотрим обновление и удаление данных на примере следующей таблицы

CREATE TABLE people (id SERIAL PRIMARY KEY, name VARCHAR(50), age INTEGER) INSERT INTO people (name, age) VALUES ('Tom', 38) INSERT INTO people (name, age) VALUES ('Bob', 42) INSERT INTO people (name, age) VALUES ('Sam', 28) INSERT INTO people (name, age) VALUES ('Alice', 33) INSERT INTO people (name, age) VALUES ('Kate', 25)

Обновление

Для обновления в SQL выполняется команда UPDATE . Например, заменим у всех пользователей имя с Tom на Tomas:

import psycopg2 conn = psycopg2.connect(dbname="metanit", user="postgres", password="123456", host="127.0.0.1") cursor = conn.cursor() # обновляем строки, где name = Tom cursor.execute("UPDATE people SET name ='Tomas' WHERE name='Tom'") # вариант с параметрами # cursor.execute("UPDATE people SET name =%s WHERE name=%s", ("Tomas", "Tom")) conn.commit() # проверяем cursor.execute("SELECT * FROM people") print(cursor.fetchall()) # [(2, 'Bob', 42), (3, 'Sam', 28), (4, 'Alice', 33), (5, 'Kate', 25), (1, 'Tomas', 38)] cursor.close() conn.close()

Для выполнения обновления также надо выполнять метод conn.commit()

Для множественного обновления, как и для множественного добавления, применяется метод executemany() :

import psycopg2 conn = psycopg2.connect(dbname="metanit", user="postgres", password="123456", host="127.0.0.1") cursor = conn.cursor() # данные для добавления people = [(15, "Sam"), (18, "Alice")] cursor.executemany("UPDATE people SET age =%s WHERE name=%s", people) conn.commit() # проверяем cursor.execute("SELECT * FROM people") print(cursor.fetchall()) # [(2, 'Bob', 42), (5, 'Kate', 25), (1, 'Tomas', 38), (3, 'Sam', 15), (4, 'Alice', 18)] cursor.close() conn.close()

В данном случае на основе списка people будут формироваться две sql-команды:

UPDATE people SET age =15 WHERE name='Sam' UPDATE people SET age =18 WHERE name='Alice'

Удаление данных

Для удаления в SQL выполняется команда DЕLETE . Например, удалим всех пользователей с именем Bob:

import psycopg2 conn = psycopg2.connect(dbname="metanit", user="postgres", password="123456", host="127.0.0.1") cursor = conn.cursor() # обновляем строки, где name = Tom cursor.execute("DELETE FROM people WHERE name=%s", ("Bob",)) conn.commit() # проверяем cursor.execute("SELECT * FROM people") print(cursor.fetchall()) # [(5, 'Kate', 25), (1, 'Tomas', 38), (3, 'Sam', 15), (4, 'Alice', 18)] cursor.close() conn.close()
import psycopg2 conn = psycopg2.connect(dbname="metanit", user="postgres", password="123456", host="127.0.0.1") cursor = conn.cursor() # удаляем строки с и = [(3,), (5,)] cursor.executemany("DELETE FROM people WHERE people) conn.commit() # проверяем cursor.execute("SELECT * FROM people") print(cursor.fetchall()) # [(1, 'Tomas', 38), (4, 'Alice', 33)] cursor.close() conn.close()

Источник

Читайте также:  Разделение разрядов чисел javascript

CRUD-функции в базе данных PostgreSQL на Python

В этом руководстве рассмотрим, как выполнять операции Insert, Update и Delete в базе данных PostgreSQL из Python-скриптов. Их еще называют DML-операциями. Также научимся передавать параметры в SQL-запросы.

В итоге разберем, как использовать cursor.executemany() для выполнения вставки, обновления или удаления нескольких строк в один запрос.

Операция Insert

В этом разделе рассмотрим, как выполнять команду Insert для вставки одной или нескольких записей в таблицу PostgreSQL из Python с помощью Psycopg2.

Для выполнения запроса нужно сделать следующее:

  • Установить psycopg2 с помощью pip.
  • Установить соединение с базой данных из Python.
  • Создать запрос Insert. Для этого требуется знать название таблицы и ее колонок.
  • Выполнить запрос с помощью cursor.execute() . В ответ вы получите количество затронутых строк.
  • После выполнения запроса нужно закоммитить изменения в базу данных.
  • Закрыть объект cursor и соединение с базой данных.
  • Также важно перехватить любые исключения, которые могут возникнуть в процессе.
  • Наконец, можно проверить результаты, запросив данные из таблицы.

Теперь посмотрим реальный пример.

 
 
import psycopg2 from psycopg2 import Error try: # Подключиться к существующей базе данных connection = psycopg2.connect(user="postgres", # пароль, который указали при установке PostgreSQL password="1111", host="127.0.0.1", port="5432", database="postgres_db") cursor = connection.cursor() postgres_insert_query = """ INSERT INTO mobile (ID, MODEL, PRICE) VALUES (%s,%s,%s)""" record_to_insert = (5, 'One Plus 6', 950) cursor.execute(postgres_insert_query, record_to_insert) connection.commit() count = cursor.rowcount print (count, "Запись успешно добавлена ​​в таблицу mobile") except (Exception, Error) as error: print("Ошибка при работе с PostgreSQL", error) finally: if connection: cursor.close() connection.close() print("Соединение с PostgreSQL закрыто")
1 Запись успешно добавлена ​​в таблицу mobile Соединение с PostgreSQL закрыто
  • В этом примере использовался запрос с параметрами для передачи значений во время работы программы. А в конце изменения сохранились с помощью cursor.commit .
  • С помощью запроса с параметрами можно передавать переменные python в качестве параметров на месте %s .

Операция Insert

Операция Update

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

# Задать новое значение price в строке с id для таблицы mobile Update mobile set price = %s where >Посмотрим на примере обновления одной строки таблицы:
 
 
import psycopg2 from psycopg2 import Error def update_table(mobile_id, price): try: # Подключиться к существующей базе данных connection = psycopg2.connect(user="postgres", # пароль, который указали при установке PostgreSQL password="1111", host="127.0.0.1", port="5432", database="postgres_db") cursor = connection.cursor() print("Таблица до обновления записи") sql_select_query = """select * from mobile where cursor.execute(sql_select_query, (mobile_id,)) record = cursor.fetchone() print(record) # Обновление отдельной записи sql_update_query = """Update mobile set price = %s where cursor.execute(sql_update_query, (price, mobile_id)) connection.commit() count = cursor.rowcount print(count, "Запись успешно обновлена") print("Таблица после обновления записи") sql_select_query = """select * from mobile where cursor.execute(sql_select_query, (mobile_id,)) record = cursor.fetchone() print(record) except (Exception, Error) as error: print("Ошибка при работе с PostgreSQL", error) finally: if connection: cursor.close() connection.close() print("Соединение с PostgreSQL закрыто") update_table(3, 970)

Убедимся, что обновление сработало. Вывод:

Таблица до обновления записи (3, 'Samsung Galaxy S21', 900.0) 1 Запись успешно обновлена Таблица после обновления записи (3, 'Samsung Galaxy S21', 970.0) Соединение с PostgreSQL закрыто

Удаление строк и колонок

В этом разделе рассмотрим, как выполнять операцию удаления данных из таблицы с помощью программы на Python и Psycopg2.

# Удалить из таблицы . в строке с id . Delete from mobile where id = %s

Можно сразу перейти к примеру. Он выглядит следующим образом:

Источник

PostgreSQL Python: Update Data in a Table

Summary: in this tutorial, you will learn how to update data in a PostgreSQL table from a Python program.

Steps for updating data in a PostgreSQL table using psycopg2

The steps for updating data are similar to the steps for inserting data into a PostgreSQL table.

First, connect to the PostgreSQL database server by calling the connect() function of the psycopg module.

conn = psycopg2.connect(dns)
Code language: Python (python)

The connect() method returns a new connection object.

Next, create a new cursor object by calling the cursor() method of the connection object.

cur = conn.cursor()
Code language: PostgreSQL SQL dialect and PL/pgSQL (pgsql)

Then, execute the UPDATE statement with the input values by calling the execute() method of the cursor object.

cur.execute(update_sql, (value1,value2))
Code language: PostgreSQL SQL dialect and PL/pgSQL (pgsql)

The execute() method accepts two parameters. The first parameter is an SQL statement to be executed, in this case, it is the UPDATE statement. The second parameter is a list of input values that you want to pass to the UPDATE statement.

If you want to get the number of rows affected by the UPDATE statement, you can get it from the rowcount attribute of the cursor object after calling the execute() method.

After that, save the changes to the database permanently by calling the commit() method of the connection object.

conn.commit()
Code language: Python (python)

Finally, close the communication with the PostgreSQL database server by calling the close() method of the cursor and connection objects.

cur.close() conn.close()
Code language: Python (python)

Updating data example

We will use the vendors table in the suppliers database that we created in the creating table tutorial for the sake of demonstration.

vendors_table

Suppose a vendor changed its name and we want to update the changes in the vendors table. To do this, we develop the update_vendor() function that updates the vendor name based on the vendor id:

#!/usr/bin/python import psycopg2 from config import config def update_vendor(vendor_id, vendor_name): """ update vendor name based on the vendor id """ sql = """ UPDATE vendors SET vendor_name = %s WHERE vendor_id = %s""" conn = None updated_rows = 0 try: # read database configuration params = config() # connect to the PostgreSQL database conn = psycopg2.connect(**params) # create a new cursor cur = conn.cursor() # execute the UPDATE statement cur.execute(sql, (vendor_name, vendor_id)) # get the number of updated rows updated_rows = cur.rowcount # Commit the changes to the database conn.commit() # Close communication with the PostgreSQL database cur.close() except (Exception, psycopg2.DatabaseError) as error: print(error) finally: if conn is not None: conn.close() return updated_rows if __name__ == '__main__': # Update vendor id 1 update_vendor(1, "3M Corp")
Code language: Python (python)

First, log in to the suppliers database on the PostgreSQL database server using psql.

Second, query data from the vendors table:

SELECT * FROM vendors WHERE vendor_id = 1;
Code language: PostgreSQL SQL dialect and PL/pgSQL (pgsql)
vendor_id | vendor_name -----------+------------- 1 | 3M Co. (1 row)
Code language: Shell Session (shell)

Third, launch another terminal and run the Python program to update the name of the vendor id 1:

python update.py
Code language: Shell Session (shell)

Finally, from the psql program, query data from the vendors table to verify the update.

SELECT * FROM vendors WHERE vendor_id = 1;
Code language: PostgreSQL SQL dialect and PL/pgSQL (pgsql)
vendor_id | vendor_name -----------+------------- 1 | 3M Corp (1 row)
Code language: Shell Session (shell)

The name of the vendor id 1 has been changed as expected.

In this tutorial, you have learned how to update data in a PostgreSQL database table from a Python program.

Источник

Оцените статью