From c41b37e04593a9fad13a72433cd9a57f0e0f564d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Ruthotto?= Date: Thu, 10 Oct 2024 09:29:27 +0200 Subject: [PATCH] fix database --- fake_news_checker.db | Bin 12288 -> 798720 bytes src/controller/mainFrameController.py | 3 +- src/models/provider.py | 3 +- src/utils/database/database.py | 43 +++++++++++++------------- 4 files changed, 25 insertions(+), 24 deletions(-) diff --git a/fake_news_checker.db b/fake_news_checker.db index 3badb6d9564e81f477932e7396b0d1418373b018..43543be20e50883482598fc36192431ab4938246 100644 GIT binary patch literal 798720 zcmeI*&u=4F9RTp>IJ+BGAWGH4A`TUtIMn&wZqfq+6$vUz1uH?-Q)GL_v58|xv9l=% zX;(dQ;jkz83sBE+0de7g(Cz|fu0>pW2GZGP@&vd+AjdGp?z&p1)O zo|*6d^&e}~i?1yI;+sEs<2zpuC!6liO~R}=arC4Z$$@OZh(+Z*3STEKU|MKvKMs+P;>EzqJm3lL;ujQM2RUe0`t` zZ!mZoZp3kwABWPD5T1ro>~JtBMjF?o!bB>RQ(<^eMOzO?Q#`O=#jTAnF&t-X;KlFV zd-J>BxcBZ#I--@?e6M;V+|0tAJd{GCaG5NIR4O$?>7(1NxUx9R+2Y$*_p0RKqv6Ph z)jqtLs{Jw!GYdbvG5r2QIu%##tz^6e2oNAZfB*pk1PBlyaQOv_h(9kP{uoCO5GafMlIs!wBv(f$B6?wrfNlCo2r%bFm+THQ_X&VqxbsE z%#*NNd>X=^L+LN!QS7>yPS@RU<8WhWeqdzrV~XBJD__mq)3Lu)O#Q_m{gmB3IE*mT ziysJ#^oE~2JY)Nl@e_spmfIloOSzW zJbcX)AV7cs0Rq=hU>MpI*GCV;6T30j*zikiasA#5V;=jzeh2D^2oNAZ;6el@E~HnT zCIO#GB?F1ZLX&g10hg8+f&Q()&8^I&lGkKUg&SN|M30s;gGoJQd2 z5My}L(-F5?#izbToeZyf6wkJ0dyjGrZ%I3_+$?TcdpMfneN=xNKBBd6#h->ZmBpS; zGj{tBAV7cs0RjZhULeK&=|W8UYbY(J`Q&IQ#d5kipqQunX`~;H8cfUP1PBlyK!5-N z0t5&UAV7e?#R;Ui|2fXO0RjXF5FkK+ z009Ew*6@DFa*@|B-oSV`3Ept?US7YL`)_9&CE6SA_~39#yHstI*Keo&JjB%Xhr5_c zr(tYjiQT+@&)D4`j?U}%cDIukeU5v`>{Q(yfpBbIzmpu!ae4hlXJq(bT+Eypo0Qit zy`i3Q{=c`dJmc=FUvh!7KEG$({w3!%JOTs=5FkL{5(?}DWry=F&>xf+Vkq^{QKzHzmNduX&{VvOT1xd<^1Nm@aG0D(_Q zAYGCFl$yK1X8cKWf%v*UR>1r7SRxe&oLb=M5aWb-{o?&m`||q5C%@uuTZo5%_%i z!6{9opP^#St2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk P1PBlyK!5;&GZ6SM0{nKN literal 12288 zcmeI&O>Wab6ae6H(j*YIF&orX#83&TRXcH=xNTqqDKaP`aY}F{vWmvexEb(IVowOL z3#>Q*2jCjL1$W>CoPcqVsgf=#b_l&Ek3BPa^K5;)C*{@44i^l2Q5;Z#8|V&F6!ZjR zgiuM2yc}65axUH~aXk-|n{h1N_1q;MTd_Yg@8N*RRBKSuwp}zltc%1no;;@*zW5EP@7lmZZc;L%53rOOQ=QO-v zv7As(B-C-@nL8!{7eqfHl+Y%vKWrT8q;BXxLn3)EG6L6R&>Uy!r^V*eU$` zA6ecgpsl+VD+(DZ=db3qTmg0O-OhZ|zCLa1Yi<;1G#1?TnPwavKa=~|l0OiofXoNC zvV8WQ1{0qx)6;XBUT>Jc_m=5t|F5V&k-Q*400ck)1V8`;KmY_l00ck)1V8`;{u_Z! MC0|vte=ih&0WSjlZ~y=R diff --git a/src/controller/mainFrameController.py b/src/controller/mainFrameController.py index 3c1e706..62d7fb6 100644 --- a/src/controller/mainFrameController.py +++ b/src/controller/mainFrameController.py @@ -21,7 +21,6 @@ class MainFrameController: self.frame = frame self.model_inference = VeraMindInference('VeraMind-Mini') self.db = FakeNewsChecker() - self._fetch_db_data() self.update_provider_list() def get_text_data(self) -> TextData: @@ -69,7 +68,7 @@ class MainFrameController: :param text_data: TextData object containing the analyzed information """ - self.db.insert_data(url=text_data.url, anbieter=text_data.get_provider(), is_fake_news=text_data.is_fake_news) + self.db.insert_data(url=text_data.url, anbieter=text_data.get_provider(),is_fake_news= text_data.is_fake_news) def _fetch_db_data(self): self.text_data_list = [] diff --git a/src/models/provider.py b/src/models/provider.py index ca860d9..3a82610 100644 --- a/src/models/provider.py +++ b/src/models/provider.py @@ -10,7 +10,8 @@ class Provider(): count_all = 0 count_fake = 0 for text_data in self.text_data_list: - print(text_data.is_fake_news) + #print(text_data.provider) + #print("FAKE" if text_data.is_fake_news else "REAL") count_all += 1 if text_data.is_fake_news: count_fake += 1 diff --git a/src/utils/database/database.py b/src/utils/database/database.py index 00ede72..79fb0ad 100644 --- a/src/utils/database/database.py +++ b/src/utils/database/database.py @@ -1,4 +1,4 @@ -import sqlite3 +import duckdb class FakeNewsChecker: def __init__(self, db_name='fake_news_checker.db'): @@ -6,49 +6,50 @@ class FakeNewsChecker: self.create_table() def create_connection(self): - return sqlite3.connect(self.db_name) + return duckdb.connect(self.db_name) def create_table(self): conn = self.create_connection() - cursor = conn.cursor() - cursor.execute(''' + conn.execute(''' CREATE TABLE IF NOT EXISTS url_info ( - id INTEGER PRIMARY KEY AUTOINCREMENT, - url TEXT NOT NULL, - anbieter TEXT NOT NULL, + id INTEGER PRIMARY KEY, + url VARCHAR NOT NULL, + anbieter VARCHAR NOT NULL, is_fake_news BOOLEAN NOT NULL ) ''') - conn.commit() conn.close() + def get_next_id(self): + conn = self.create_connection() + result = conn.execute('SELECT COALESCE(MAX(id), 0) + 1 FROM url_info').fetchone() + conn.close() + return result[0] + def insert_data(self, url, anbieter, is_fake_news): conn = self.create_connection() - cursor = conn.cursor() - cursor.execute(''' - INSERT INTO url_info (url, anbieter, is_fake_news) - VALUES (?, ?, ?) - ''', (url, anbieter, is_fake_news)) - conn.commit() + next_id = self.get_next_id() + conn.execute(''' + INSERT INTO url_info (id, url, anbieter, is_fake_news) + VALUES (?, ?, ?, ?) + ''', [next_id, url, anbieter, bool(is_fake_news)]) conn.close() def fetch_data(self): conn = self.create_connection() - cursor = conn.cursor() - cursor.execute('SELECT * FROM url_info') - rows = cursor.fetchall() + result = conn.execute('SELECT * FROM url_info').fetchall() conn.close() - return rows + return result # Beispielnutzung der Klasse if __name__ == '__main__': checker = FakeNewsChecker() # Daten hinzufügen - checker.insert_data('https://example.com/news/123', 'Example News', 0) - checker.insert_data('https://fakenews.com/article/456', 'Fake News', 1) + checker.insert_data('https://example.com/news/123', 'Example News', False) + checker.insert_data('https://fakenews.com/article/456', 'Fake News', True) # Daten abrufen data = checker.fetch_data() for row in data: - print(f"ID: {row[0]}, URL: {row[1]}, Anbieter: {row[2]}, Fake News: {'Ja' if row[3] else 'Nein'}") + print(f"ID: {row[0]}, URL: {row[1]}, Anbieter: {row[2]}, Fake News: {'Ja' if row[3] else 'Nein'}") \ No newline at end of file