Я надеюсь, что мое форматирование в порядке, так как я впервые использую stackOverflow
Независимо от того, как я изменяю свой код и методы, я продолжаю получать ту же ошибку при выполнении этого кода
Файл "/usr/lib/python3/dist-packages/mysql/connector/cursor.py", строка 83, в вызов возврат байтов (self.params [index]) IndexError: индекс кортежа издиапазона
Во время обработки вышеупомянутого исключения произошло другое исключение:
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, в вызов " Недостаточно параметров для оператора SQL ") mysql.connector.errors.ProgrammingError: Недостаточно параметров для оператора SQL
Это раздел моего основного проекта, в котором будут записываться текущие значения cerПеременная tain, а также координаты 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.")
Спасибо всем, кто отвечает.