Remove PostgreSQL and move to SQLite3
This commit is contained in:
+18
-3
@@ -1,10 +1,25 @@
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker, DeclarativeBase
|
||||
|
||||
DATABASE_URL = os.environ["DATABASE_URL"]
|
||||
DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:///./data/cluedo.db")
|
||||
|
||||
engine = create_engine(DATABASE_URL, pool_pre_ping=True)
|
||||
engine_options = {"pool_pre_ping": True}
|
||||
|
||||
if DATABASE_URL.startswith("sqlite"):
|
||||
# SQLite does not allow connections to be used from another thread by
|
||||
# default. FastAPI/SQLAlchemy may use a connection across request threads.
|
||||
engine_options["connect_args"] = {"check_same_thread": False}
|
||||
|
||||
# Make the parent directory available for the default local database.
|
||||
if DATABASE_URL.startswith("sqlite:///"):
|
||||
sqlite_path = DATABASE_URL.removeprefix("sqlite:///")
|
||||
if sqlite_path not in (":memory:", ""):
|
||||
Path(sqlite_path).expanduser().parent.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
engine = create_engine(DATABASE_URL, **engine_options)
|
||||
SessionLocal = sessionmaker(bind=engine, autoflush=False, autocommit=False)
|
||||
|
||||
class Base(DeclarativeBase):
|
||||
@@ -16,4 +31,4 @@ def get_db():
|
||||
yield db
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user