Если у меня уже есть данные в моей таблице "current_schedule" с заданной датой, мне нужно получить этот "id" и "INSERT" в другую таблицу "статистика" с этим "id". Если у меня нет, мне нужно создать его, а затем INSERT с созданным "id". Я почти сделал это:
cursor.execute("SELECT id FROM current_schedule WHERE date = '{}'".format(lessondate))
idforme = cursor.fetchone()
if cursor.fetchone():
idforme = idforme[0]
if flag == str_to_bool('true'):
cursor.execute("INSERT INTO statistic (id_student, id_current_schedule,here) \
VALUES ('{}','{}',1)".format(id_student,idforme))
if flag == str_to_bool('false'):
cursor.execute("INSERT INTO statistic (id_student, id_current_schedule,here) \
VALUES ('{}','{}',0)".format(id_student,idforme))
else:
cursor.execute("INSERT INTO current_schedule (id_schedule, date) VALUES ('{}','{}')".format(id_schedule,lessondate))
mysql.connection.commit()
if flag == str_to_bool('true'):
cursor.execute("INSERT INTO statistic (id_student, id_current_schedule,here) \
VALUES ('{}',LAST_INSERT_ID(),1)".format(id_student))
if flag == str_to_bool('false'):
cursor.execute("INSERT INTO statistic (id_student, id_current_schedule,here) \
VALUES ('{}',LAST_INSERT_ID(),0)".format(id_student))
mysql.connection.commit()
Но проблема заключается в том, что он дважды создает новые данные в "current_schedule", и только после этого начинает вставлять данные с уже созданным "id" (первым) в "статистику".
Как насчет того, чтобы попробовать это, поскольку это в основном тот же запрос:
else:
cursor.execute("INSERT INTO current_schedule (id_schedule, date) VALUES ('{}','{}')".format(id_schedule,lessondate))
mysql.connection.commit()
flagNum = 0 if flag == str_to_bool('false') else 1
cursor.execute("INSERT INTO statistic (id_student, id_current_schedule,here) \
VALUES ('{}',LAST_INSERT_ID(),{})".format(id_student, flagNum))
mysql.connection.commit()
flag
только когда'true'
либо'true'
или'false'
? Не могли бы вы попробовать поставитьelse
вместоif flag == str_to_bool('false'):
и посмотреть, будет ли что-то создано вstatistic
с первой попытки?