Я пытаюсь вставить некоторые данные из фрейма данных Python, уже созданного в Jupyter Notebook, в SQL Server Management Studio 18
Код, который я написал как на Python, так и на сервере SQL, представлен ниже
PANDAS DATAFRAME
(это типичная строка моего информационного кадра)
Название фильма IMDB Рейтинг Актеры Режиссер Сюжет Сюжет Ключевые слова Жанры
Аватар 7.8 [Сэм-Уортингтон, Зои-Салдана, Сигурни-Плетение] Джеймс-Кэмерон Параличный морской пехотинец, отправленный на Луну Пан [аватар, будущий, морской, местный, параплегический] [Действие, Приключение, Фэнтези]
Снимок экрана Python Dataframe
SQL
USE Movies_Dataset;
GO
DROP TABLE IF EXISTS data_table;
GO
CREATE TABLE data_table
(
[MovieID] INT IDENTITY(1,1)
,[Movie_Title] VARCHAR(MAX)
,[IMDB_Rating] VARCHAR(MAX)
,[Actors] VARCHAR(MAX)
,[Direcor] VARCHAR(MAX)
,[Plot_Summary] VARCHAR(MAX)
,[Plot_Keywords] VARCHAR(MAX)
,[Genres] VARCHAR(MAX)
);
PYTHON
import pyodbc
connStr = pyodbc.connect("DRIVER={SQL Server Native Client 11.0};"
"SERVER=LAPTOP-IFTEP7AL;"
"DATABASE=Movies_Dataset;"
"Trusted_Connection=yes")
cursor = connStr.cursor()
for index, row in final_dataset.iterrows():
cursor.execute("""INSERT INTO dbo.data_table(
[Movie_Title],
[IMDB_Rating],
[Actors],
[Director],
[Plot_Summary],
[Plot_Keywords],
[Genres]) values (?, ?, ?, ?, ?, ?, ?)""",
row['Movie Title'],row['IMDB
Rating'],row['Actors'],row['Director'],row['Plot Summary'],row['Plot
Keywords'],row['Genres'])
connStr.commit()
cursor.close()
connStr.close()
Хотя мойкод вроде нормально, не работает. И я подозреваю, что это потому, что я пытаюсь вставить список (например, актеры или жанры) вместо varchars.
У вас есть идеи, как это сделать?
Ошибка Iget (скриншот)
Также я использовал sqlalchemy со следующим кодом Python:
import pyodbc
import sqlalchemy
from sqlalchemy import create_engine
import urllib
quoted = urllib.parse.quote_plus("DRIVER={SQL Server Native Client
11.0};SERVER=LAPTOP-IFTEP7AL;DATABASE=Movies_Dataset")
engine = create_engine('mssql+pyodbc:///?odbc_connect={}'.format(quoted))
final_dataset.to_sql('data_table', schema='dbo', con = engine)
result = engine.execute('SELECT COUNT(*) FROM [dbo].[data_table]')
result.fetchall()
ошибка от sqlalchemy