【问题标题】:Import Data from .csv file into mysql using python使用python将.csv文件中的数据导入mysql
【发布时间】:2020-05-04 13:33:01
【问题描述】:

我正在尝试从 .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() 运算符尝试相同的操作时,没有显示错误,但数据没有插入到我的数据库表中。

这里可以看到输入数据:

【问题讨论】:

    标签: python mysql csv


    【解决方案1】:

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

    【讨论】:

    • 我调整了您的解决方案,但正如您在我更新的帖子中看到的那样,我仍在努力解决。
    • 1.您没有适应我的建议(您仍在使用 for 循环)。 2. 你有同样的问题吗? (没有错误)
    • 对不起,我没有看到 for 循环丢失,但不幸的是它仍然无法正常工作。如果我使用您的代码,则错误代码为 1064(语法):“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以了解在 '[Uhrzeit]、[Einstrahlungsdaten] 附近使用的正确语法)值 (''01:00'', ''1''),(''02:00'', ''1''),..."
    • @Jagi207 我想通了。你能再试试这个解决方案吗?我编辑了。
    猜你喜欢
    • 2013-02-19
    • 1970-01-01
    • 2020-08-06
    • 2021-12-30
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多