Spaces:
Runtime error
Runtime error
import sqlite3 | |
class WikiDBSqlite: | |
def __init__(self, db_path): | |
"""Initialize the database with path to SQLite database""" | |
self.db_path = db_path | |
self.conn = sqlite3.connect(db_path) | |
self.conn.row_factory = sqlite3.Row | |
self.cursor = self.conn.cursor() | |
self._article_count = self._get_article_count() | |
print(f"Connected to SQLite database with {self._article_count} articles") | |
def __del__(self): | |
"""Close database connection when object is destroyed""" | |
if hasattr(self, 'conn') and self.conn: | |
self.conn.close() | |
def _get_article_count(self): | |
"""Get the number of articles in the database""" | |
self.cursor.execute("SELECT COUNT(*) FROM articles") | |
return self.cursor.fetchone()[0] | |
def get_article_count(self): | |
"""Return the number of articles in the database""" | |
return self._article_count | |
def get_all_article_titles(self): | |
"""Return a list of all article titles""" | |
self.cursor.execute("SELECT title FROM articles") | |
return [row[0] for row in self.cursor.fetchall()] | |
def get_article(self, title): | |
"""Get article data by title""" | |
self.cursor.execute( | |
"SELECT title, text FROM articles WHERE title = ?", | |
(title,) | |
) | |
article = self.cursor.fetchone() | |
if not article: | |
return {} | |
# Get links for this article | |
self.cursor.execute( | |
"SELECT target_title FROM links WHERE source_title = ?", | |
(title,) | |
) | |
links = [row[0] for row in self.cursor.fetchall()] | |
return { | |
'title': article['title'], | |
'text': article['text'], | |
'links': links | |
} | |
def article_exists(self, title): | |
"""Check if an article exists in the database""" | |
self.cursor.execute( | |
"SELECT 1 FROM articles WHERE title = ? LIMIT 1", | |
(title,) | |
) | |
return bool(self.cursor.fetchone()) | |
def get_article_text(self, title): | |
"""Get the text of an article""" | |
self.cursor.execute( | |
"SELECT text FROM articles WHERE title = ?", | |
(title,) | |
) | |
result = self.cursor.fetchone() | |
return result['text'] if result else '' | |
def get_article_links(self, title): | |
"""Get the links of an article""" | |
self.cursor.execute( | |
"SELECT target_title FROM links WHERE source_title = ?", | |
(title,) | |
) | |
return [row[0] for row in self.cursor.fetchall()] |