dynamic database

This commit is contained in:
2024-10-07 22:58:06 -04:00
parent 47475c4f34
commit a8c12f6edf
7 changed files with 81 additions and 8 deletions

View File

@@ -4,14 +4,20 @@ ENV PYTHONFAULTHANDLER=1
ENV PYTHONUNBUFFERED=1 ENV PYTHONUNBUFFERED=1
ENV MODE="DEVELOPMENT"
RUN mkdir -p /app RUN mkdir -p /app
COPY requirements.txt /app COPY requirements.txt /app
WORKDIR /app WORKDIR /app
RUN pip3 install setuptools RUN pip3 install setuptools
RUN pip3 install fastapi RUN pip3 install fastapi
RUN pip3 install sqlalchemy RUN pip3 install sqlalchemy
RUN pip3 install -r requirements.txt RUN pip3 install -r requirements.txt
EXPOSE 8000 EXPOSE 8000

View File

@@ -4,12 +4,16 @@ ENV PYTHONFAULTHANDLER=1
ENV PYTHONUNBUFFERED=1 ENV PYTHONUNBUFFERED=1
ENV MODE="PRODUCTION"
RUN mkdir -p /app RUN mkdir -p /app
COPY requirements.txt /app COPY requirements.txt /app
WORKDIR /app WORKDIR /app
RUN pip3 install setuptools RUN pip3 install setuptools
RUN pip3 install -r requirements.txt RUN pip3 install -r requirements.txt
EXPOSE 8001 EXPOSE 8001

View File

@@ -1,7 +1,7 @@
from sqlalchemy import (Column, Integer, from sqlalchemy import (Column, Integer,
DECIMAL, Text, DECIMAL, TEXT,
VARCHAR, TIMESTAMP, Date, INTEGER) VARCHAR, TIMESTAMP, DATE, INTEGER)
from datetime import datetime, timezone from datetime import datetime
from database import Base from database import Base

20
config.py Normal file
View File

@@ -0,0 +1,20 @@
import os
def load_config(mode=os.environ.get('MODE')):
try:
print(f"mode is {mode}")
if mode == 'PRODUCTION':
from settings_prod import ApplicationConfig
return ApplicationConfig
elif mode == 'DEVELOPMENT':
from settings_local import ApplicationConfig
return ApplicationConfig
else:
pass
except ImportError:
from settings_local import ApplicationConfig
return ApplicationConfig

View File

@@ -3,13 +3,20 @@ from sqlalchemy.engine import URL
from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import sessionmaker
from sqlalchemy.orm import declarative_base from sqlalchemy.orm import declarative_base
from config import load_config
ApplicationConfig = load_config()
url = URL.create( url = URL.create(
drivername="postgresql", drivername="postgresql",
username="postgres", username=ApplicationConfig.POSTGRES_USERNAME,
password="password", password=ApplicationConfig.POSTGRES_PW,
host="192.168.1.204", host=ApplicationConfig.POSTGRES_SERVER,
database="eamco", database=ApplicationConfig.POSTGRES_DBNAME00,
port=5432 port=ApplicationConfig.POSTGRES_PORT
) )
engine = create_engine(url) engine = create_engine(url)

19
settings_local.py Normal file
View File

@@ -0,0 +1,19 @@
class ApplicationConfig:
"""
Basic Configuration for a generic User
"""
CURRENT_SETTINGS = 'LOCAL'
# databases info
POSTGRES_USERNAME = 'postgres'
POSTGRES_PW = 'password'
POSTGRES_SERVER = '192.168.1.204'
POSTGRES_PORT = '5432'
POSTGRES_DBNAME00 = 'eamco'
SQLALCHEMY_DATABASE_URI = "postgresql+psycopg2://{}:{}@{}/{}".format(POSTGRES_USERNAME,
POSTGRES_PW,
POSTGRES_SERVER,
POSTGRES_DBNAME00
)

17
settings_prod.py Normal file
View File

@@ -0,0 +1,17 @@
class ApplicationConfig:
"""
Basic Configuration for a generic User
"""
CURRENT_SETTINGS = 'LOCAL'
# databases info
POSTGRES_USERNAME = 'postgres'
POSTGRES_PW = 'password'
POSTGRES_SERVER = '192.168.1.204'
POSTGRES_PORT = '5432'
POSTGRES_DBNAME00 = 'auburnoil'
SQLALCHEMY_DATABASE_URI = "postgresql+psycopg2://{}:{}@{}/{}".format(POSTGRES_USERNAME,
POSTGRES_PW,
POSTGRES_SERVER,
POSTGRES_DBNAME00
)
SQLALCHEMY_BINDS = {'eamco': SQLALCHEMY_DATABASE_URI}