В основном, что мой код просто обновляет базу данных, которую я создал, где весь столбец имеет формат «varchar». Мой код может создать новую запись, когда временной интервал «10: 00-10: 15». Однако, когда он не может обновить его, когда временной интервал становится «10: 15-10: 30» или в основном в любой другой временной интервал. Мой код ниже:Ошибка при обновлении столбца в mysql с использованием python
import time
import MySQLdb
from MySQLdb import *
import datetime
import json
date = time.localtime()
year_mon_date_day = [date.tm_year, date.tm_mon, date.tm_mday, date.tm_wday]
column = ''
if date.tm_hour==10:
if date.tm_min<=15:
column = "10:00-10:15"
elif date.tm_min<=30:
column = "10:15-10:30"
elif date.tm_min <= 45:
column = "10:30-10:45"
elif date.tm_min <= 60:
column = "10:45-11:00"
elif date.tm_hour==11:
if date.tm_min<=15:
column = "11:00-11:15"
elif date.tm_min<=30:
column = "11:15-11:30"
elif date.tm_min <= 45:
column = "11:30-11:45"
elif date.tm_min <= 60:
column = "11:45-12:00"
elif date.tm_hour==12:
if date.tm_min<=15:
column = "12:00-12:15"
elif date.tm_min<=30:
column = "12:15-12:30"
elif date.tm_min <= 45:
column = "12:30-12:45"
elif date.tm_min <= 60:
column = "12:45-01:00"
elif date.tm_hour==13:
if date.tm_min<=15:
column = "01:00-01:15"
elif date.tm_min<=30:
column = "01:15-01:30"
elif date.tm_min <= 45:
column = "01:30-01:45"
elif date.tm_min <= 60:
column = "01:45-02:00"
else:
pass
db = MySQLdb.connect(host='localhost', user='root', passwd='4747',db='traffic_record')
cursor=db.cursor()
if column == "10:00-10:15":
query = '''INSERT INTO `traffic_record`.`RoadA` (`Date`,`Day`,`''' + column + '''`) VALUES ('%s','%s','%s')'''
value = (year_mon_date_day,date.tm_wday, 9)
else:
query = '''UPDATE `traffic_record`.`RoadA` SET `''' + column + '''`=`%s` WHERE `Date`=''' + str(year_mon_date_day) + '''`'''
value = (3)
cursor.execute(query, value)
db.commit()
db.close()
Мой код дает следующее сообщение об ошибке при попытке запустить его в любой другой срок, кроме '10: 00-10: 15. Я получаю следующее сообщение об ошибке:
/usr/bin/python2.7 /home/sparsha/PycharmProjects/MachineLearning/fill_table.py
Traceback (most recent call last):
File "/home/sparsha/PycharmProjects/MachineLearning/fill_table.py", line 83, in <module>
cursor.execute(query, value)
File "/usr/local/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 187, in execute
query = query % tuple([db.literal(item) for item in args])
TypeError: 'int' object is not iterable
Process finished with exit code 1
Я не могу решить эту проблему. Любая помощь будет высоко оценена. Благодарю.
Я попробовал это сейчас, и полученная ошибка: _mysql_exceptions.ProgrammingError: (1064, «У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса, [2016, 7, 26, 1] ''в строке 1") –
Вы передаете дату как список, преобразованный в str (т.е. 'year_mon_date_day'), почему? –
Это должно быть, когда я играл с кодом, чтобы проверить, устранена ли какая-либо проблема существующей ошибки. Когда я удаляю str, возникает ошибка: query = '' 'UPDATE 'traffic_record'.' RoadA' SET '' '' + column + ''' '='% s' WHERE 'Date' = '' ' + year_mon_date_day + '' '' '' ' TypeError: не может конкатенировать объекты' str 'и' list ' –