Spaces:
Sleeping
Sleeping
File size: 1,806 Bytes
c81673d | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 | """
init_db.py — Creates the users table if it does not exist.
Works with both Neon PostgreSQL (production) and SQLite (local dev).
"""
from db import get_conn, USE_POSTGRES
import logging
logger = logging.getLogger(__name__)
def init_db():
conn = get_conn()
try:
cursor = conn.cursor()
if USE_POSTGRES:
# PostgreSQL schema
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
username TEXT UNIQUE NOT NULL,
email TEXT,
password TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
else:
# SQLite schema
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT UNIQUE NOT NULL,
email TEXT,
password TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
''')
# Migration safety for existing SQLite DBs
try:
cursor.execute('ALTER TABLE users ADD COLUMN email TEXT')
except Exception:
pass # column already exists
conn.commit()
logger.info("Database initialized successfully.")
except Exception as e:
try:
conn.rollback()
except Exception:
pass
logger.warning(f"Database init warning: {e}")
finally:
try:
conn.close()
except Exception:
pass
if __name__ == '__main__':
init_db()
print("Database initialized.")
|