Python SQL Server: обновление

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

Это руководство начинается с того места, где закончилось руководство по массовому копированию.

Обновление данных в таблице

Шаг 1. Создайте новый файл update.py в каталоге проекта.

Шаг 2. Определите функцию update_customer_email, которая обновляет адрес электронной почты клиента:

import logging
from connect import create_connection
def update_customer_email(customer_id: int, email: str) -> bool:
    # Connect to the SQL Server
    conn = create_connection()
    if conn is None:
        return False
    # Update the customer email
    with(conn, conn.cursor() as cursor):
        cursor.execute(
            "UPDATE Customers SET Email = %s WHERE CustomerID = %s",
           (email, customer_id),
        )
        conn.commit()
        logging.info(f'{cursor.rowcount} rows updated successfully.')
        return True if cursor.rowcount == 1 else False

Как это работает.

Сначала импортируем встроенный модуль ведения журнала:

import logging

Во-вторых, импортируйте функцию create_connection из модуля connect :

from connect import create_connection

В-третьих, определите функцию update_customer_email, которая принимает идентификатор клиента(customer_id), который идентифицирует клиента для обновления, и новый адрес электронной почты клиента(email):

def update_customer_email(customer_id: int, email: str) -> bool:

Функция возвращает значение true, если она успешно обновляет адрес электронной почты клиента, и false в противном случае.

В-четвертых, создайте соединение с SQL Server и верните false, если соединение не удалось:

conn = create_connection()
if conn is None:
    return False

В-пятых, управляйте объектами Connection и Cursor в операторе with, чтобы избежать их ручного закрытия:

with(conn, conn.cursor() as cursor):

В-шестых, создайте объект Cursor и выполните оператор UPDATE, который обновляет адрес электронной почты клиента по идентификатору:

cursor.execute(
    "UPDATE Customers SET Email = %s WHERE CustomerID = %s",
   (email, customer_id),
)

Обратите внимание, что мы используем оператор UPDATE с параметризованными значениями для предотвращения атак с использованием SQL-инъекций.

В-седьмых, вызовите метод commit() объекта Connection, чтобы навсегда сохранить изменения в базе данных:

conn.commit()

Наконец, запишите количество обновленных строк, обратившись к свойству rowcount объекта Cursor, и верните True, чтобы указать, что обновление прошло успешно, или False в противном случае:

logging.info(f'{cursor.rowcount} rows updated successfully.')
return True if cursor.rowcount == 1 else False

Шаг 3. Измените модуль main.py для использования функции update_customer_email:

import logging, sys
from update import update_customer_email
# config logging to console
logging.basicConfig(
    stream=sys.stdout, 
    encoding='utf-8', 
    format='%(levelname)s:%(message)s',
    level=logging.DEBUG
)
# update customer email
update_customer_email(1, ' [email protected] ')

Как это работает(мы сосредоточимся на части, посвященной обновлению).

Сначала импортируйте update_customer_email из модуля обновления:

from update import update_customer_email

Во-вторых, вызовите функцию update_customer_email, чтобы обновить адрес электронной почты клиента с идентификатором 1 на « [email protected] »:

update_customer_email(1, ' [email protected] ')

Шаг 4. Запустите SQL Server Management Studio(SSMS), подключитесь к SQL Server и выполните следующий запрос для получения данных от клиента с идентификатором 1:

SELECT * 
FROM customers
WHERE customerID = 1;

Выход:

Обновление SQL Server Python Электронная почта клиента до

Шаг 5. Откройте терминал и выполните следующую команду для запуска файла main.py:

python main.py

Выход:

INFO:1 rows updated successfully

Шаг 6. Выполните следующий запрос еще раз, чтобы проверить обновление:

SELECT * 
FROM customers
WHERE customerID = 1;

Выход:

Электронное письмо клиенту после обновления SQL Server Python

Загрузите исходный код проекта

Загрузите исходный код проекта

Краткое содержание

  • Используйте метод execute() объекта Cursor для выполнения оператора UPDATE с целью обновления данных в таблице SQL Server.
Мирослав С.

Автор статей, ИБ-специалист