使用python将.csv文件中的数据导入mysql

2024-09-19 23:41:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从.csv文件的两列导入数据(time 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()操作符尝试相同的操作时,不会显示错误,但数据不会插入到数据库的表中

在这里您可以看到输入数据:

input data


Tags: csvthe数据import数据库sqlmysqlopen
1条回答
网友
1楼 · 发布于 2024-09-19 23:41:58

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()

相关问题 更多 >