繁体   English   中英

如何使用 Python 将 CSV 数据导入 MYSQL

[英]How To Import CSV Data into MYSQL using Python

当尝试使用 pyodbc 将数据插入 MYSQL 表时,我收到以下消息:

AttributeError: 'str' object 没有属性 'SessionID'

有谁知道我做错了什么?

我的代码:

import pandas as pd
import pyodbc

#generate data frame with pandas
df = pd.read_csv(r'C:\Users\adm_buhe\Documents\order_9b3og4p9wqb876gku.csv')


#db connection settings
conn = pyodbc.connect('Driver={SQL Server};'
                      'Server=SRV-TASK-HO;'
                      'Database=stat;'
                      'Trusted_Connection=yes;')
                      
#connection as variable cursor
cursor = conn.cursor()


for row in df:
    cursor.execute('''
    INSERT INTO dbo.ABB_Charging_Fakten(sessionID, chargerAlias, SN, startTime, endTime, durationHeures, energyDelivered, totalCharge, sessionStatus, idCar, authorizationType, stopReason )
    VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
    ''',
           row.SessionID,
           row.ChargerAlias,
           row.SN,
           row.StartTime,
           row.EndTime,
           row.Duration,
           row.EnergyDelivered,
           row.TotalCharge,
           row.SessionStatus,
           row.UserName,
           row.AuthorizationType,
           row.StopReason)
           
    
#execute query
conn.commit()

您的问题是您正在迭代 df 的 colnames。 一个简单的例子:

df = pd.DataFrame.from_dict( 
  { 
    'Year': [2018, 2019, 2020, 2021], 
    'Sales': [1000, 2300, 1900, 3400], 
  } 
) 
print(df)

   Year  Sales
0  2018   1000
1  2019   2300
2  2020   1900
3  2021   3400

如果您只是尝试遍历 df:

for row in df:
    print(row)

Output(这是字符串,然后 python 返回属性错误):

Year
Sales

您可以使用 pandas 中的iterrows()方法,该方法每次迭代都会返回一行作为元组。 (但是对于大型数据帧来说,迭代行可能是一种缓慢的方法)

for idx, row in df.iterrows():
    print(row)

Output:

Year     2018
Sales    1000
Name: 0, dtype: int64
Year     2019
Sales    2300
Name: 1, dtype: int64
Year     2020
Sales    1900
Name: 2, dtype: int64
Year     2021
Sales    3400
Name: 3, dtype: int64

因此,在这种情况下,您可以使用:

for idx, row in df.iterrows():
    cursor.execute('''
    INSERT INTO dbo.ABB_Charging_Fakten(sessionID, chargerAlias, SN, startTime, endTime, durationHeures, energyDelivered, totalCharge, sessionStatus, idCar, authorizationType, stopReason )
    VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
    ''',
           row.SessionID,
           row.ChargerAlias,
           row.SN,
           row.StartTime,
           row.EndTime,
           row.Duration,
           row.EnergyDelivered,
           row.TotalCharge,
           row.SessionStatus,
           row.UserName,
           row.AuthorizationType,
           row.StopReason)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM