我想创建一个数据库,因为我的所有数据都是以CSV格式存在的。我的CSV文件有160列和15行。由于列数较多,手动输入列名非常困难。我希望能够从CSV文件中获取列名并存储在一个变量中。我已经完成了这一步,现在列名已经存储在变量中。但是,我无法将这些值分配给数据库的列。
def parseCSV(filePath): # CVS Column Names data = pd.read_csv(filePath) column = data.columns # Use Pandas to parse the CSV file csvData = pd.read_csv(filePath,names=column, header=None) # Loop through the Rows # for i,row in csvData.iterrows(): # sql = "INSERT INTO addresses (first_name, last_name, address, street, state, zip) VALUES (%s, %s, %s, %s, %s, %s)" # value = (row['first_name'],row['last_name'],row['address'],row['street'],row['state'],str(row['zip'])) # mycursor.execute(sql, value, if_exists='append') # mydb.commit() # print(i,row['first_name'],row['last_name'],row['address'],row['street'],row['state'],row['zip'])
我注释掉了那些硬编码的行。我希望这些列名来自CSV文件,而不是手动添加。
回答:
您可以直接将数据框保存为SQL表,使用df.to_sql,示例如下:
def parseCSV(filePath): data = pd.read_csv(filePath) data.to_sql('addresses', 'yoursqlconnection')