В этом руководстве вы узнаете, как обновлять данные в таблице 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;
Выход:
![]()
Шаг 5. Откройте терминал и выполните следующую команду для запуска файла main.py:
python main.py
Выход:
INFO:1 rows updated successfully
Шаг 6. Выполните следующий запрос еще раз, чтобы проверить обновление:
SELECT * FROM customers WHERE customerID = 1;
Выход:
![]()
Загрузите исходный код проекта
Загрузите исходный код проекта
Краткое содержание
- Используйте метод execute() объекта Cursor для выполнения оператора UPDATE с целью обновления данных в таблице SQL Server.

