Add database functions
This commit is contained in:
0
app/__init__.py
Normal file
0
app/__init__.py
Normal file
BIN
app/app_db/app.db
Normal file
BIN
app/app_db/app.db
Normal file
Binary file not shown.
@@ -1,11 +1,10 @@
|
||||
import sqlite3
|
||||
from pathlib import Path
|
||||
import bcrypt
|
||||
import pandas as pd
|
||||
|
||||
BASE_DIR = Path(__file__).resolve().parent.parent
|
||||
DB_PATH = BASE_DIR / "data" / "app.db"
|
||||
|
||||
BASE_DIR = Path(__file__).resolve().parent
|
||||
# DB_PATH = BASE_DIR / "app_db" / "app.db"
|
||||
DB_PATH = BASE_DIR / "app.db"
|
||||
|
||||
def get_conn():
|
||||
# check_same_thread=False, damit Streamlit mehrere Threads nutzen kann
|
||||
@@ -14,4 +13,5 @@ def get_conn():
|
||||
def get_list(sql, params=None):
|
||||
conn = get_conn()
|
||||
df = pd.read_sql_query(sql, conn, params=params)
|
||||
conn.close()
|
||||
return df
|
||||
@@ -2,7 +2,7 @@
|
||||
from contextlib import closing
|
||||
import bcrypt
|
||||
|
||||
from db import get_conn #, create_user, verify_user, get_role_for_user
|
||||
from app_db.app_db import get_conn
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
@@ -12,7 +12,7 @@ from db import get_conn #, create_user, verify_user, get_role_for_user
|
||||
def create_user(
|
||||
username: str,
|
||||
password: str,
|
||||
role_id: str = "user",
|
||||
role_id: int = 1,
|
||||
email: str | None = None,
|
||||
firstname: str | None = None,
|
||||
lastname: str | None = None
|
||||
|
||||
@@ -9,6 +9,7 @@ from auth import load_credentials_from_db, needs_password_change, update_passwor
|
||||
def get_authenticator():
|
||||
with open("config/auth.yaml", "r", encoding="utf-8") as f:
|
||||
base_config = yaml.load(f, Loader=SafeLoader)
|
||||
|
||||
db_creds = load_credentials_from_db()
|
||||
base_config["credentials"] = db_creds
|
||||
|
||||
|
||||
0
app/data/__init__.py
Normal file
0
app/data/__init__.py
Normal file
36
app/data/db.py
Normal file
36
app/data/db.py
Normal file
@@ -0,0 +1,36 @@
|
||||
from sqlalchemy import create_engine, Text
|
||||
import pandas as pd
|
||||
from dotenv import load_dotenv
|
||||
from pathlib import Path
|
||||
from urllib.parse import quote
|
||||
import os
|
||||
import logging
|
||||
|
||||
|
||||
env_path = Path("config/settings.env")
|
||||
load_dotenv(env_path)
|
||||
|
||||
oracle_conn_str = os.getenv("oracle_conn_str")
|
||||
co_dw_conn_str = os.getenv("co_dw_conn_str")
|
||||
co_daten_conn_str = os.getenv("co_daten_conn_str")
|
||||
|
||||
def get_conn(db):
|
||||
match db:
|
||||
case "oracle":
|
||||
engine = create_engine(oracle_conn_str)
|
||||
case "co_dw":
|
||||
engine = create_engine(co_dw_conn_str)
|
||||
case "co_daten":
|
||||
engine = create_engine(co_dw_conn_str)
|
||||
case _:
|
||||
logging.info(f"Datenbank {db} konnte nicht gefunden werden")
|
||||
return engine
|
||||
|
||||
# def get_data(db):
|
||||
# engine = get_conn(db)
|
||||
# with engine.connect() as conn:
|
||||
# print(engine)
|
||||
# return
|
||||
|
||||
# if __name__ == "__main__":
|
||||
# get_data("co_daten")
|
||||
10
app/data/scriptloader.py
Normal file
10
app/data/scriptloader.py
Normal file
@@ -0,0 +1,10 @@
|
||||
from pathlib import Path
|
||||
|
||||
def get_sql(filename):
|
||||
sql_query = Path(f"app/data/sql/{filename}.sql").read_text()
|
||||
return sql_query
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(get_sql("sales_umsatz"))
|
||||
1
app/data/sql/co_kostenobjekte.sql
Normal file
1
app/data/sql/co_kostenobjekte.sql
Normal file
@@ -0,0 +1 @@
|
||||
select * from bi.Dim_Kostenobjekt
|
||||
1
app/data/sql/sales_umsatz.sql
Normal file
1
app/data/sql/sales_umsatz.sql
Normal file
@@ -0,0 +1 @@
|
||||
select * from umsatz
|
||||
@@ -1,7 +1,16 @@
|
||||
import streamlit as st
|
||||
import logging
|
||||
from logging_config import setup_logging
|
||||
from version import __version__
|
||||
from auth_runtime import require_login
|
||||
from ui.sidebar import build_sidebar
|
||||
import os
|
||||
|
||||
APP_ENV = os.environ.get("APP_ENV", "dev")
|
||||
|
||||
logger = setup_logging(APP_ENV)
|
||||
#logger.info(f"Starting migration - APP-Version {__version__}")
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
def main():
|
||||
st.set_page_config(
|
||||
|
||||
@@ -10,18 +10,17 @@ from auth import create_user
|
||||
|
||||
APP_ENV = os.environ.get("APP_ENV", "dev")
|
||||
logger = setup_logging(APP_ENV)
|
||||
|
||||
logger.info(f"Starting migration - APP-Version {__version__}")
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
BASE_DIR = Path(__file__).resolve().parents[1]
|
||||
DB_DIR = BASE_DIR / "data"
|
||||
DB_DIR = BASE_DIR / "app" / "app_db"
|
||||
DB_PATH = DB_DIR / "app.db"
|
||||
MIGRATIONS_DIR = BASE_DIR / "migrations"
|
||||
ADMIN_USERNAME = "admin"
|
||||
|
||||
print(BASE_DIR)
|
||||
|
||||
def get_connection() -> sqlite3.Connection:
|
||||
DB_DIR.mkdir(exist_ok=True)
|
||||
@@ -91,6 +90,11 @@ def admin_exists() -> bool:
|
||||
"SELECT 1 FROM users WHERE username = ?",
|
||||
(ADMIN_USERNAME,),
|
||||
).fetchone()
|
||||
if row is not None:
|
||||
print(row[0])
|
||||
else:
|
||||
print(ADMIN_USERNAME)
|
||||
print("Kein Admin gefunden")
|
||||
return row is not None
|
||||
|
||||
|
||||
@@ -111,9 +115,9 @@ def create_admin_user():
|
||||
ok = create_user(
|
||||
username=ADMIN_USERNAME,
|
||||
password=pw1,
|
||||
role="admin",
|
||||
role_id=1,
|
||||
email="admin@co_app",
|
||||
firstname="co_app",
|
||||
firstname="***",
|
||||
lastname="admin"
|
||||
)
|
||||
|
||||
|
||||
0
app/pages/__init__.py
Normal file
0
app/pages/__init__.py
Normal file
24
app/pages/costobjects.py
Normal file
24
app/pages/costobjects.py
Normal file
@@ -0,0 +1,24 @@
|
||||
import streamlit as st
|
||||
import pandas as pd
|
||||
from data.scriptloader import get_sql
|
||||
from data.db import get_conn
|
||||
|
||||
|
||||
|
||||
def load_data():
|
||||
sql = get_sql("co_kostenobjekte")
|
||||
print(sql)
|
||||
engine = get_conn("co_dw")
|
||||
with engine.connect() as conn:
|
||||
df = pd.read_sql(sql, engine)
|
||||
print(df)
|
||||
return df
|
||||
|
||||
st.dataframe(load_data())
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
df = load_data()
|
||||
print(df)
|
||||
@@ -1,7 +1,7 @@
|
||||
import streamlit as st
|
||||
from auth_runtime import require_login
|
||||
from ui.sidebar import build_sidebar, hide_sidebar_if_logged_out
|
||||
from auth import get_fullname_for_user, create_user
|
||||
from ui.sidebar import hide_sidebar_if_logged_out
|
||||
from auth import create_user
|
||||
|
||||
hide_sidebar_if_logged_out()
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
from contextlib import closing
|
||||
import streamlit as st
|
||||
from auth import get_fullname_for_user, get_role_for_user
|
||||
from db import get_conn, get_list
|
||||
import sqlite3
|
||||
from app_db.app_db import get_conn, get_list
|
||||
# import sqlite3
|
||||
|
||||
|
||||
def build_sidebar():
|
||||
|
||||
Reference in New Issue
Block a user