我有两个不同的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)
答案 0 :(得分:1)
我认为您的查询格式不正确,因为您要添加四个值,而last_line
只是一个字符串。尝试使用str.split()
来确保所有四个值都可以理解:
cursor.execute(query, last_line.split(","))