From 337a3e81678b81ddf607e0a2043fa24947109da4 Mon Sep 17 00:00:00 2001 From: CEF Server Date: Sat, 27 Jul 2024 21:59:05 +0000 Subject: [PATCH] more handling of env vars --- .gitignore | 1 - alembic.ini | 45 +++++++++++++++++ alembic.ini.example | 114 -------------------------------------------- alembic/env.py | 5 +- cef_3M/sql.py | 4 +- run.sh | 1 + 6 files changed, 52 insertions(+), 118 deletions(-) create mode 100644 alembic.ini delete mode 100644 alembic.ini.example diff --git a/.gitignore b/.gitignore index 4a893ee..ce96cbd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ config.py -alembic.ini keys/* **.pyc diff --git a/alembic.ini b/alembic.ini new file mode 100644 index 0000000..90af511 --- /dev/null +++ b/alembic.ini @@ -0,0 +1,45 @@ + +[alembic] +script_location = alembic +prepend_sys_path = . +version_path_separator = os # Use os.pathsep. Default configuration used for new projects. + +# Overwritten by env.py +sqlalchemy.url = mysql+mysqldb://ergo:password@localhost/ergo_ext + + +[post_write_hooks] + +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/alembic.ini.example b/alembic.ini.example deleted file mode 100644 index 00aa699..0000000 --- a/alembic.ini.example +++ /dev/null @@ -1,114 +0,0 @@ -# A generic, single database configuration. - -[alembic] -# path to migration scripts -script_location = alembic - -# template used to generate migration file names; The default value is %%(rev)s_%%(slug)s -# Uncomment the line below if you want the files to be prepended with date and time -# file_template = %%(year)d_%%(month).2d_%%(day).2d_%%(hour).2d%%(minute).2d-%%(rev)s_%%(slug)s - -# sys.path path, will be prepended to sys.path if present. -# defaults to the current working directory. -prepend_sys_path = . - -# timezone to use when rendering the date within the migration file -# as well as the filename. -# If specified, requires the python>=3.9 or backports.zoneinfo library. -# Any required deps can installed by adding `alembic[tz]` to the pip requirements -# string value is passed to ZoneInfo() -# leave blank for localtime -# timezone = - -# max length of characters to apply to the -# "slug" field -# truncate_slug_length = 40 - -# set to 'true' to run the environment during -# the 'revision' command, regardless of autogenerate -# revision_environment = false - -# set to 'true' to allow .pyc and .pyo files without -# a source .py file to be detected as revisions in the -# versions/ directory -# sourceless = false - -# version location specification; This defaults -# to alembic/versions. When using multiple version -# directories, initial revisions must be specified with --version-path. -# The path separator used here should be the separator specified by "version_path_separator" below. -# version_locations = %(here)s/bar:%(here)s/bat:alembic/versions - -# version path separator; As mentioned above, this is the character used to split -# version_locations. The default within new alembic.ini files is "os", which uses os.pathsep. -# If this key is omitted entirely, it falls back to the legacy behavior of splitting on spaces and/or commas. -# Valid values for version_path_separator are: -# -# version_path_separator = : -# version_path_separator = ; -# version_path_separator = space -version_path_separator = os # Use os.pathsep. Default configuration used for new projects. - -# set to 'true' to search source files recursively -# in each "version_locations" directory -# new in Alembic version 1.10 -# recursive_version_locations = false - -# the output encoding used when revision files -# are written from script.py.mako -# output_encoding = utf-8 - -sqlalchemy.url = mysql+mysqldb://user:pass@localhost/dbname - - -[post_write_hooks] -# post_write_hooks defines scripts or Python functions that are run -# on newly generated revision scripts. See the documentation for further -# detail and examples - -# format using "black" - use the console_scripts runner, against the "black" entrypoint -# hooks = black -# black.type = console_scripts -# black.entrypoint = black -# black.options = -l 79 REVISION_SCRIPT_FILENAME - -# lint with attempts to fix using "ruff" - use the exec runner, execute a binary -# hooks = ruff -# ruff.type = exec -# ruff.executable = %(here)s/.venv/bin/ruff -# ruff.options = --fix REVISION_SCRIPT_FILENAME - -# Logging configuration -[loggers] -keys = root,sqlalchemy,alembic - -[handlers] -keys = console - -[formatters] -keys = generic - -[logger_root] -level = WARN -handlers = console -qualname = - -[logger_sqlalchemy] -level = WARN -handlers = -qualname = sqlalchemy.engine - -[logger_alembic] -level = INFO -handlers = -qualname = alembic - -[handler_console] -class = StreamHandler -args = (sys.stderr,) -level = NOTSET -formatter = generic - -[formatter_generic] -format = %(levelname)-5.5s [%(name)s] %(message)s -datefmt = %H:%M:%S diff --git a/alembic/env.py b/alembic/env.py index 36112a3..c3dddb6 100644 --- a/alembic/env.py +++ b/alembic/env.py @@ -5,15 +5,18 @@ from sqlalchemy import pool from alembic import context +import os + # this is the Alembic Config object, which provides # access to the values within the .ini file in use. config = context.config - # Interpret the config file for Python logging. # This line sets up loggers basically. if config.config_file_name is not None: fileConfig(config.config_file_name) +config.set_main_option("sqlalchemy.url", os.getenv("DB_URI")) + # add your model's MetaData object here # for 'autogenerate' support # from myapp import mymodel diff --git a/cef_3M/sql.py b/cef_3M/sql.py index ef9e434..fb50c8d 100644 --- a/cef_3M/sql.py +++ b/cef_3M/sql.py @@ -14,13 +14,13 @@ except: dburl = config.DBURL engine = create_engine( - alembic.get("alembic", "sqlalchemy.url"), + dburl, pool_pre_ping=True, pool_recycle=1800 ) ergoEngine = create_engine( - alembic.get("alembic", "sqlalchemy.url"), + dburl, pool_pre_ping=True, pool_recycle=1800 ) diff --git a/run.sh b/run.sh index f9a97d4..fde8a92 100755 --- a/run.sh +++ b/run.sh @@ -1,2 +1,3 @@ #!/bin/sh +alembic upgrade head uvicorn --reload main:app --port 8001