folgende Methode erzeugt meine Datenbank:
Code: Alles auswählen
def write_critical_errors(self, channels, asset_ids, error_timestamp):
cursor_crit = self.connection2.cursor()
sql_statement_crit = "CREATE TABLE IF NOT EXISTS CriticalError (channelname TEXT, Assetid TEXT, Timestamp TEXT)"
try:
cursor_crit.execute(sql_statement_crit)
werte = {"channelname":channels, "Assetid":asset_ids,"Timestamp":error_timestamp}
sql = "INSERT INTO CriticalError VALUES (:channelname, :Assetid, :Timestamp)"
cursor_crit.execute(sql, werte)
self.connection2.commit()
except Exception as e:
self.logger.error('writing_process for error critical failed', exc_info=True)
self.connection2.rollback()
msg = QMessageBox()
msg.setIcon(QMessageBox.Critical)
msg.setText("Error")
msg.setInformativeText('Could not perform sql writing process for critical errors')
msg.setWindowTitle("Error")
msg.exec_()
Code: Alles auswählen
def clicked_show_day(self):
date = self.ui.calendar.selectedDate()
# Convert clicked date to timedelta object
selected_date = date.toString("yyyy-MM-dd")
print(selected_date)
print(type(selected_date))
# selected_date_converted = datetime.strptime(selected_date, "%Y-%m-%d")
test = "SELECT rowid, channelname, Assetid, Timestamp FROM CriticalError WHERE Timestamp LIKE \'&"+selected_date+"&"+"\'"
print(test)
with closing(sqlite3.connect(r"D:\python_dev\GRAPHIC_ALARMING_MACHINE\DATABASE\critical_errors.db")) as connection:
with closing(connection.cursor()) as cursor:
cursor.execute(
"SELECT * FROM CriticalError WHERE Timestamp LIKE \'&"+selected_date+"&\'"
)
critical_errors = cursor.fetchall()
print(critical_errors)
Wenn ich nun aus dem QCalendar Widget die Zeit vom 18.02.2021 auswähle, erhalte ich einen String mit dem Format "2021-02-18". (Variable "selected_date")
Diese Abfrage liefert aber keine Ergebnisse, obwohl ich mindestens 10 Einträge mit dem Timestamp "2021-02-18 xx:xx:xx" habe. Die Uhrzeit interessiert mich nicht, deshalb habe ich Wildcards in der LIKE Abfrage genutzt...weiss jemand, wieso hier nichts gefunden wird?
So sieht die SQL Abfrage als String aus:
SELECT rowid, channelname, Assetid, Timestamp FROM CriticalError WHERE Timestamp LIKE '&2021-02-21&'
Wäre mega dankbar für einen Hinweis