В этом руководстве вы узнаете, как вставлять данные в таблицу SQL Server из программы на Python.
Это руководство начинается с того места, где закончилось руководство по подключению к SQL Server из программы Python.
Мы добавим новую строку в таблицу «Авторы» из программы Python.
Вставка данных в таблицу
Шаг 1. Создайте новый файл insert.py в каталоге проекта.
Шаг 2. Определите функцию insert_author, которая вставляет нового автора в таблицу Authors:
import logging from connect import create_connection def insert_author(first_name: str, last_name:str, birth_date:str) -> int | None: # Connect to the SQL Sever conn = create_connection() if conn is None: return None # Insert a new author with(conn, conn.cursor() as cursor): cursor.execute( "INSERT INTO Authors(FirstName, LastName, BirthDate) VALUES(%s, %s, %s)", (first_name, last_name, birth_date), ) conn.commit() logging.info(f'Author: {first_name} {last_name} inserted successfully.') return cursor.lastrowid
Как это работает.
Сначала импортируйте встроенный модуль ведения журнала и create_connection из модуля подключения.
import logging from connect import create_connection
Во-вторых, подключитесь к SQL Server с помощью функции create_connection():
conn = create_connection() if conn is None: return None
Если соединение не удалось, немедленно верните None.
В-третьих, используйте объекты Connection и Cursor в операторе with, чтобы гарантировать их правильное управление.:
with(conn, conn.cursor() as cursor):
В-четвертых, выполните оператор INSERT с параметризованными значениями, чтобы предотвратить SQL-инъекцию:
cursor.execute( "INSERT INTO Authors(FirstName, LastName, BirthDate) VALUES(%s, %s, %s)", (first_name, last_name, birth_date), )
В-пятых, вызовите метод commit(), чтобы сохранить изменения в базе данных.
conn.commit()
В-шестых, зарегистрируйте сообщение об успешном добавлении автора:
logging.info(f'Author: {first_name} {last_name} inserted successfully.')
В-седьмых, верните идентификатор новой вставленной строки, используя свойство cursor.lastrowid:
return cursor.lastrowid
Шаг 3. Измените main.py для вызова функции insert_author():
import logging, sys from insert import insert_author # config logging to console logging.basicConfig( stream=sys.stdout, encoding='utf-8', format='%(levelname)s:%(message)s', level=logging.DEBUG ) # insert a new author id = insert_author('Alice', 'Johnson', '1978-05-14'); if id is not None: logging.info(f'Author ID: {id}')
Как это работает.
Сначала импортируйте функцию insert_author из модуля insert.py:
from insert import insert_author
Во-вторых, вызовите функцию insert_author(), чтобы вставить новую строку в таблицу Authors:
id = insert_author('Alice', 'Johnson', '1978-05-14');
В-третьих, отобразите идентификатор автора, если строка была вставлена успешно:
if id is not None: logging.info(f'Author ID: {id}')
Шаг 4. Откройте терминал и выполните следующую команду:
python main.py
Если вы видите следующий вывод, вы успешно добавили нового автора в базу данных.
INFO:Author: Alice Johnson inserted successfully. INFO:Author ID: 1
Загрузите исходный код проекта
Загрузите исходный код проекта
Краткое содержание
- Вызовите метод execute() объекта Cursor, чтобы выполнить оператор INSERT для вставки новой строки в таблицу.
- Используйте параметризованные значения в операторе INSERT для предотвращения SQL-инъекций.