将数据从 Python 插入到 SQL 服务器
Insert data from Python to SQL Server
我正在尝试将已在 Jupyter Notebook 中创建的 python 数据框的一些数据插入到 SQL Server Management Studio 18
我在 Python 和 SQL 服务器中编写的代码如下所示
PANDAS 数据框
(这是我的数据框的典型行)
电影名称 IMDB 评分演员导演情节摘要情节关键词流派
Avatar 7.8 [Sam-Worthington, Zoe-Saldana, Sigourney-Weave] James-Cameron 被派往月球的截瘫海军陆战队员 Pan [头像, 未来, 海军陆战队, 本土, 截瘫] [动作, 冒险, 奇幻]
Python Dataframe Screenshot
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。
你知道怎么做吗?
The error I get (screenshot)
我还使用了带有以下 python 代码的 sqlalchemy:
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()
the error from sqlalchemy
我在使用pyodbc的时候正常使用程序..
import pyodbc
connStr = pyodbc.connect("DRIVER={SQL Server Native Client 11.0};"
"SERVER=LAPTOP-IFTEP7AL;"
"DATABASE=Movies_Dataset;"
"Trusted_Connection=yes")
cursor = connStr.cursor()
sqlExecSP="""\
EXEC [dbo].[InsertInMyTable] @Movie_Title = ? ,@IMDB_Rating = ? ,@Actors = ? ,@Director = ?;
"""
for index, row in final_dataset.iterrows():
params = (row['Movie Title'],row['IMDBRating'],row['Actors'],row['Director'])
cursor.execute(sqlExecSP, params)
connStr.commit()
cursor.close()
connStr.close()
我正在尝试将已在 Jupyter Notebook 中创建的 python 数据框的一些数据插入到 SQL Server Management Studio 18
我在 Python 和 SQL 服务器中编写的代码如下所示
PANDAS 数据框
(这是我的数据框的典型行)
电影名称 IMDB 评分演员导演情节摘要情节关键词流派
Avatar 7.8 [Sam-Worthington, Zoe-Saldana, Sigourney-Weave] James-Cameron 被派往月球的截瘫海军陆战队员 Pan [头像, 未来, 海军陆战队, 本土, 截瘫] [动作, 冒险, 奇幻]
Python Dataframe Screenshot
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。
你知道怎么做吗?
The error I get (screenshot)
我还使用了带有以下 python 代码的 sqlalchemy:
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()
the error from sqlalchemy
我在使用pyodbc的时候正常使用程序..
import pyodbc
connStr = pyodbc.connect("DRIVER={SQL Server Native Client 11.0};"
"SERVER=LAPTOP-IFTEP7AL;"
"DATABASE=Movies_Dataset;"
"Trusted_Connection=yes")
cursor = connStr.cursor()
sqlExecSP="""\
EXEC [dbo].[InsertInMyTable] @Movie_Title = ? ,@IMDB_Rating = ? ,@Actors = ? ,@Director = ?;
"""
for index, row in final_dataset.iterrows():
params = (row['Movie Title'],row['IMDBRating'],row['Actors'],row['Director'])
cursor.execute(sqlExecSP, params)
connStr.commit()
cursor.close()
connStr.close()