Импорт данных из CSV-файла в mysql с использованием python - PullRequest
0 голосов
/ 04 мая 2020

ОБНОВЛЕНИЕ

Я знаю, что об этом уже спрашивали несколько раз, но я не могу решить свою проблему (абсолютный новичок).

Я пытаюсь импортировать данные из двух столбцов файла .csv (время чч: мм, с плавающей точкой). Я создал базу данных и таблицу в 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 (), ошибка не отображается, но данные не вставляются в таблицу моей базы данных.

Как я уже сказал, я искал подходящее решение, но мне нужна ваша помощь для этой конкретной задачи c. Заранее спасибо!

Здесь вы можете увидеть входные данные: входные данные

1 Ответ

0 голосов
/ 04 мая 2020

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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...