【发布时间】:2019-09-25 13:46:17
【问题描述】:
我希望我的格式没问题,因为这是我第一次使用 stackOverflow
无论我如何更改我的代码和方法,在执行此代码时都会遇到相同的错误
文件“/usr/lib/python3/dist-packages/mysql/connector/cursor.py”, 第 83 行,在 调用 return bytes(self.params[index]) IndexError: tuple index out of range
在处理上述异常的过程中,又发生了一个异常:
Traceback(最近一次调用最后一次):文件“sqlTest.py”,第 40 行,在 mycursor.execute(sql,val) 文件“/usr/lib/python3/dist-packages/mysql/connector/cursor.py”,第 558 行, 在执行 stmt = RE_PY_PARAM.sub(psub, stmt) 文件“/usr/lib/python3/dist-packages/mysql/connector/cursor.py”,第 86 行, 在 call "SQL 语句的参数不足") mysql.connector.errors.ProgrammingError:没有足够的参数 SQL语句
这是我主要项目的一部分,它将记录某些变量的当前值以及 GPS 坐标和时间戳。
据我所知,主要问题与数据库预期 8 个数据库条目有关,而我应该只需要 7 个。
我主要是按照https://www.w3schools.com/python/python_mysql_insert.asp的教程,因为我对python和mySQL一起使用不是很熟悉。
#Initialize mySQL databse connection
mydb = mysql.connector.connect(
host="themySQLserver.net",
user="myUSername",
passwd="_____",
database="24totheTLE"
)
这些变量通常由主程序设置,但我手动设置它们以进行故障排除
top_since_epoch = 4
left_since_epoch = 1
bottom_since_epoch = 5
right_since_epoch = 3
这是调用python2脚本获取gps数据的代码
fullgps = os.popen("python gps.py").read()
gps_split = fullgps.split(";")
gps_split[1] = gps_split[1].rstrip()
s1 = float(gps_split[0])
s2 = float(gps_split[1])
我的数据库的主键“LogNum”设置为自动递增,因此我没有在我的代码中提到它。
ts = time.time()
timestam = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
mycursor = mydb.cursor()
sql = "INSERT INTO records (TimeStamp,CarsTop,CarsLeft,CarsRight,CarsBottom,GPSLong,GPSLat) VALUES (%s, %s, %s, %s, %s, %s, %s)"
val = [timestam,top_since_epoch,left_since_epoch,bottom_since_epoch,s2,s1]
mycursor.execute(sql,val)
mydb.commit()
print(mycursor.rowcount, "record inserted.")
感谢所有回复的人。
【问题讨论】:
标签: python-3.x raspberry-pi mysql-python