Вставка записей и фреймов данных В базу данных SQL

#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, а данные, которые я записываю, являются плавающими или десятичными, поэтому может помочь воссоздание таблиц. С синтаксисом не было никаких проблем