Python SQL Server: вставка данных

В этом руководстве вы узнаете, как вставлять данные в таблицу 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-инъекций.
Мирослав С.

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