landing/database.py

45 lines
No EOL
1.2 KiB
Python

import sqlite3
import os
from dotenv import load_dotenv
load_dotenv()
DATABASE_URL = os.getenv("DATABASE_FILE")
def init_db():
conn = sqlite3.connect(DATABASE_URL)
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS subscribers (
id INTEGER PRIMARY KEY AUTOINCREMENT,
email TEXT UNIQUE NOT NULL
)
""")
conn.commit()
conn.close()
def add_email(email):
try:
with sqlite3.connect(DATABASE_URL, timeout=10) as conn:
cursor = conn.cursor()
cursor.execute("INSERT INTO subscribers (email) VALUES (?)", (email,))
conn.commit()
return True
except sqlite3.IntegrityError:
return False
except sqlite3.OperationalError as e:
print(f"Operational Error: {e}")
return False
def remove_email(email):
try:
with sqlite3.connect(DATABASE_URL, timeout=10) as conn:
cursor = conn.cursor()
cursor.execute("DELETE FROM subscribers WHERE email = ?", (email,))
conn.commit()
if cursor.rowcount > 0:
return True
return False
except Exception as e:
print(f"Error removing email: {e}")
return False