在 CSV 导入到 SQL 服务器期间无法使用 for 循环正确填充行

Can't fill rows correctly using for loop during CSV import to SQL Server

我正在尝试使用 Python 将 CSV 文件导入 SQL 服务器。但是,在代码的最后部分,有些东西没有像我希望的那样工作。将其导入 SQL 服务器后,每一行看起来都一样,即使 DataFrame 中的行不同。

代码:

import pypyodbc as pdb
import plotly.graph_objects as go
import numpy as np

server = 'LAPTOP-124CPEDE\SQLEXPRESS'
database = 'Datasets'
conn = pdb.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';Trusted_Connection=yes;')
cursor = conn.cursor()

data = pd.read_csv(r'C:\Users\aleks\Desktop\zadania python+sql\dataset_1.csv', sep=';')

df = pd.DataFrame(data, columns=['a_timestamp', 'any_date', 'some_money', 'weird_name', 'count_of_something'])
df

cursor.execute('CREATE TABLE dataset_1 (a_timestamp nvarchar(255), any_date date, some_money float, weird_name nvarchar(255), count_of_something float)')

tuple = (row.a_timestamp, row.any_date, row.some_money, row.weird_name, row.count_of_something)

for row in df.itertuples():
    cursor.execute('''
                INSERT INTO Datasets.dbo.dataset_1 (a_timestamp, any_date, some_money, weird_name, count_of_something)
                VALUES (?,?,?,?,?)
                ''',
                tuple)
conn.commit()

您可以在 for 循环中的每次迭代中获取数据帧行的值,而不是插入在 for 循环之前分配的同一行数据帧,并使用这种方法将它们插入到数据库的 table 中:

for row in df.itertuples():
    values = (row.a_timestamp, row.any_date, row.some_money, row.weird_name, row.count_of_something)
    cursor.execute('''
                   INSERT INTO Datasets.dbo.dataset_1 (a_timestamp,
                                                       any_date,
                                                       some_money,
                                                       weird_name,
                                                       count_of_something)
                   VALUES (?,?,?,?,?)
                   ''',
                   values)