将来自两个csv文件的最后一行添加到两个不同的mysql表中

时间:2020-06-12 15:51:47

标签: mysql python-3.x

我有两个不同的csv文件,这些文件充满了数据(大于1 Hz)。他们看起来像这样:

date_time,V1,V2,V3
2020-06-12 15:30:00,13.2,3.8,5.6
2020-06-12 15:31:00,13.3,3.1,5,1

date_time,V1,V2
2020-06-12 15:28:00,5.4,8.3
2020-06-12 15:28:30,1.8,2.9

我想从每个文件中每5或10秒读取最后一行,并将其添加到mysql数据库中的表中。第一个文件的最后一行应添加到表db1中,而文件2的最后一行应添加到db2中。我尝试的是以下内容(仅适用于第一个文件):

import subprocess
import mysql.connector as mysql
import time

db = mysql.connect(
    host = "localhost",
    user = "root",
    passwd = "bla"
    database = "data"
)
cursor = db.cursor()

while (1):
    last_line = subprocess.check_output(["tail", "-1", "/home/pi/output/test1.txt"])
    query = "INSERT INTO db1 (date_time, V1, V2, V3) VALUES (%s,%s,%s,%s)"
    cursor.execute(query, last_line)
    db.commit()
    time.sleep(5)

但是我得到了错误: mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; Check the manual that corresponds to your Maria Db server version for the right syntax to use near '%s,%s,%s,%s)' at line 1

我的脚本读取的行显示b'2020-06-12 15:30:00.100,13.3,3.1,5.1\n'print(last_line)

1 个答案:

答案 0 :(得分:1)

我认为您的查询格式不正确,因为您要添加四个值,而last_line只是一个字符串。尝试使用str.split()来确保所有四个值都可以理解:

cursor.execute(query, last_line.split(","))