Вставка кадра данных Python в таблицу SQL

Применимо к:база данныхSQL Server Azure SQL Управляемый экземпляр SQL Azure

В этой статье описывается, как вставить кадр данных pandas в базу данных SQL с помощью пакета pyodbc в Python.

Предварительные требования

  • Azure Data Studio. Перед выполнением установки ознакомьтесь со статьей Скачивание и установка Azure Data Studio.

  • Выполните действия из статьи Образцы баз данных AdventureWorks, чтобы восстановить версию OLTP примера базы данных для вашей версии SQL Server.

    Проверить правильность восстановления базы данных можно с помощью запроса к таблице HumanResources.Department:

    USE AdventureWorks;
    SELECT * FROM HumanResources.Department;
    

Установка пакетов Python

  1. В Azure Data Studio откройте новую записную книжку и подключитесь к ядру Python 3.

  2. Выберите Управление пакетами.

    Управление пакетами

  3. В области Управление пакетами выберите вкладку Добавить новые.

  4. Для каждого из следующих пакетов введите имя пакета, щелкните Поиск, а затем Установить.

    • pyodbc
    • pandas

Создание примера CSV-файла

Скопируйте следующий текст и сохраните его в файл с именем department.csv.

DepartmentID,Name,GroupName,
1,Engineering,Research and Development,
2,Tool Design,Research and Development,
3,Sales,Sales and Marketing,
4,Marketing,Sales and Marketing,
5,Purchasing,Inventory Management,
6,Research and Development,Research and Development,
7,Production,Manufacturing,
8,Production Control,Manufacturing,
9,Human Resources,Executive General and Administration,
10,Finance,Executive General and Administration,
11,Information Services,Executive General and Administration,
12,Document Control,Quality Assurance,
13,Quality Assurance,Quality Assurance,
14,Facilities and Maintenance,Executive General and Administration,
15,Shipping and Receiving,Inventory Management,
16,Executive,Executive General and Administration

Создайте новую таблицу базы данных

  1. Чтобы подключиться к базе данных AdventureWorks, выполните действия, описанные в разделе Подключение к SQL Server.

  2. Создайте таблицу с именем HumanResources.DepartmentTest. Таблица SQL будет использоваться для вставки кадров данных.

    CREATE TABLE [HumanResources].[DepartmentTest](
    [DepartmentID] [smallint] NOT NULL,
    [Name] [dbo].[Name] NOT NULL,
    [GroupName] [dbo].[Name] NOT NULL
    )
    GO
    

Загрузка кадра данных из CSV-файла

С помощью пакета Python pandas создайте кадр данных, загрузите CSV-файл, а затем загрузите кадр данных в новую таблицу SQL HumanResources.DepartmentTest.

  1. Подключитесь к ядру Python 3.

  2. Вставьте следующий код в ячейку кода, указав в нем правильные значения для параметров server, database, username, password и расположение CSV-файла.

    import pyodbc
    import pandas as pd
    # insert data from csv file into dataframe.
    # working directory for csv file: type "pwd" in Azure Data Studio or Linux
    # working directory in Windows c:\users\username
    df = pd.read_csv("c:\\user\\username\department.csv")
    # Some other example server values are
    # server = 'localhost\sqlexpress' # for a named instance
    # server = 'myserver,port' # to specify an alternate port
    server = 'yourservername' 
    database = 'AdventureWorks' 
    username = 'username' 
    password = 'yourpassword' 
    cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
    cursor = cnxn.cursor()
    # Insert Dataframe into SQL Server:
    for index, row in df.iterrows():
         cursor.execute("INSERT INTO HumanResources.DepartmentTest (DepartmentID,Name,GroupName) values(?,?,?)", row.DepartmentID, row.Name, row.GroupName)
    cnxn.commit()
    cursor.close()
    
  3. Запустите ячейку.

Подтверждение данных в базе данных

Подключитесь к ядру SQL и базе данных AdventureWorks, а затем выполните следующую инструкцию SQL и убедитесь, что таблица была успешно заполнена данными из кадра данных.

SELECT count(*) from HumanResources.DepartmentTest;

Результаты

(No column name)
16

Дальнейшие действия