python - 使用python将数据从.csv文件导入mysql
问题描述
我正在尝试从 .csv 文件的两列(时间 hh:mm,float)导入数据。我在mysql中创建了一个数据库和一个表。
import mysql.connector
import csv
mydb = mysql.connector.connect(host='127.0.0.1',
user= 'xxx',
passwd='xxx',
db='pv_datenbank')
cursor = mydb.cursor()
# get rid of the '' at the beginning of the .csv file
s = open('Sonneneinstrahlung.csv', mode='r', encoding='utf-8-sig').read()
open('Sonneneinstrahlung.csv', mode='w', encoding='utf-8').write(s)
print(s)
with open('Sonneneinstrahlung.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=';')
sql = """INSERT INTO einstrahlung ('Uhrzeit', 'Einstrahlungsdaten') VALUES (%s, %s)"""
for row in csv_reader:
print(row)
print(cursor.rowcount, "was inserted.")
cursor.executemany(sql, csv_reader)
#cursor.execute(sql, row, multi=True)
mydb.commit()
mydb.close()
如果我用 运行程序executemany()
,结果如下:
- ['01:00', '1']
- '-1 被插入。'
在此之后我确实得到了错误代码:并非所有参数都被再次使用。
当我用execute()
操作员尝试同样的事情时,没有显示错误,但数据没有插入到我的数据库表中。
在这里您可以看到输入数据:
解决方案
executemany
接受一个语句和一系列参数集。
尝试这个:
with open('Sonneneinstrahlung.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter=';')
sql = """INSERT INTO einstrahlung (Uhrzeit, Einstrahlungsdaten) VALUES (%s, %s)"""
cursor.executemany(sql, csv_reader)
mydb.commit()
推荐阅读
- aws-sdk - 无法从假设角色 aws 获得凭证
- php - 使用 cURL 获取响应更新 Laravel 数据库表
- pandas - pytorch闪电海王星上传pandas数据框错误
- powershell - 使用 PowerShell 选择特定的 Excel 列以导出到另一个电子表格
- bash - 当管道输出到文件并且需要清理时,svn commit 挂起
- string - 谁能告诉下面的代码有什么问题,我收到以下错误:TypeError TypeError:字符串索引必须是整数
- c# - .NET 5 WorkerService HostingEnvironment.IsDevelopment() 在环境变量 ASPNETCORE_ENVIRONMENT 设置为 Development 时返回 false
- c# - 为什么我对 RichTextBox.AppendText() 的 C# 代码调用没有一致地处理 \r\n?
- javascript - 变量未在 .then 处理程序中定义
- reactjs - 如何将 Material UI 中的 BOX 组件用于不同的屏幕尺寸?