У меня есть такой оператор INSERT:
mtemp = "station, calendar, type, name, date, time"
query = "INSERT INTO table (%s) VALUES ( '%s', '%s', '%s', %s, '%s', '%s' );"
query = query % (mtemp, mstation, mcalendar, mtype, mname, mdate, mtime)
curs.execute(query, )
conn.commit()
Проблема в том, что я не могу получить переменные: mcalendar, mdate, mtime в этом выражении. Они не являются постоянными значениями. Я должен был бы получить доступ к каждому из них в замкнутом круге. Однако значения mstation, mtype и mname являются фиксированными. Я попытался разделить оператор INSERT на несколько: по одной для каждой из трех переменных в цикле forloop, и по одному для трех фиксированных значений в одном цикле forloop. Forloop в основном, чтобы определить, когда вставлять строки. У меня есть список row1 и список row2, row1 - это полный список записей, в то время как rows отсутствуют некоторые из них. Я проверяю, существует ли запись row2 в row1. Если это так, то выполнить инструкцию INSERT, если нет, ничего не делать.
Я запустил коды и обнаружил две проблемы:
- Он вставляет больше строк, чем нужно. Предполагается вставить не более 240 строк, поскольку для каждого датчика в каждом дне есть только 240 временных событий. (Интересно, потому что я написал слишком много forloop, чтобы он продолжал вставлять строки). Теперь он получает более 400 новых строк.
- В этих новых строках, вставляемых в таблицу, они имеют значения только в столбцах с фиксированным значением. Для трех из них, которые я использую один forloop для вставки данных, они вообще не имеют значения.
Надеюсь, кто-нибудь подскажет мне здесь. Заранее спасибо! Я могу поставить больше кодов здесь, если это необходимо. Я даже не уверен, что я на правильном пути.