#python-3.x #mysql-connector
Вопрос:
import csv
#import mysql.connector
import pandas as pd
import pymysql
# Connection to the database
connection = pymysql.connect(host='localhost',
user='root',
password='password',
db='db')
cursor = connection.cursor()
sdata = pd.read_csv(r'/opt/data/data.csv')
sdf = pd.DataFrame(sdata, columns=['Site','t_date','t_time','V_MN'])
for index, row in sdf.iterrows():
#print(row['V_MIN'])
cursor.execute('INSERT INTO "Site_Voltage"(v_mn) VALUES ("%s")', row['V_MN'])
connection.commit()
Я пытаюсь вставить значения столбца в свой файл данных csv в таблицу Site_Voltage с записью v_mn, однако я получаю следующую ошибку
У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, на наличие правильного синтаксиса для использования рядом со ЗНАЧЕНИЯМИ»Site_Voltage»(v_mn) («3.3e0») «в строке 1»)
Кто — нибудь знает, что я здесь делаю не так ?
Ответ №1:
Попробуйте изменить
'INSERT INTO "Site_Voltage"(v_mn) VALUES ("%s")', row['V_MN']'
Для
'INSERT INTO Site_Voltage (v_mn) VALUES ("%s"), row['V_MN']'
Комментарии:
1. Я внес предложенные вами изменения, на этот раз получив синтаксическую ошибку ` курсор.выполнить («ВСТАВИТЬ В ЗНАЧЕНИЯ Site_Voltage(v_mn) («%s`), строка [«V_MN»]») » Синтаксическая ошибка: недопустимый синтаксис
Ответ №2:
Таким образом, проблема в том, что тип данных в базе данных MySQL должен соответствовать I m с использованием int, а данные, которые я записываю, являются плавающими или десятичными, поэтому может помочь воссоздание таблиц. С синтаксисом не было никаких проблем