Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
M
mentat-test
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
713
Mentat
mentat-test
Commits
66b711e8
Commit
66b711e8
authored
6 years ago
by
Jan Mach
Browse files
Options
Downloads
Patches
Plain Diff
Improved coding style in migration environment script.
(Redmine issue:
#4230
,
#3443
)
parent
a8c06759
No related branches found
No related tags found
No related merge requests found
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
migrations/env.py
+61
-48
61 additions, 48 deletions
migrations/env.py
scripts/sqldb-migrate.py
+1
-1
1 addition, 1 deletion
scripts/sqldb-migrate.py
with
62 additions
and
49 deletions
migrations/env.py
+
61
−
48
View file @
66b711e8
#-------------------------------------------------------------------------------
# This file is part of Mentat system (https://mentat.cesnet.cz/).
#
# Copyright (C) since 2011 CESNET, z.s.p.o (http://www.ces.net/)
# Use of this source is governed by the MIT license, see LICENSE file.
#-------------------------------------------------------------------------------
"""
This module contains environment setup for `Alembic-based <https://alembic.sqlalchemy.org/en/latest/index.html>`__
database migrations for metadata database ``mentat_main``.
"""
from
__future__
import
with_statement
from
alembic
import
context
from
sqlalchemy
import
engine_from_config
,
pool
from
logging.config
import
fileConfig
import
logging
# 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.
fileConfig
(
config
.
config_file_name
)
logger
=
logging
.
getLogger
(
'
alembic.env
'
)
from
sqlalchemy
import
engine_from_config
,
pool
from
alembic
import
context
# add your model's MetaData object here
# for 'autogenerate' support
# from myapp import mymodel
# target_metadata = mymodel.Base.metadata
from
flask
import
current_app
config
.
set_main_option
(
'
sqlalchemy.url
'
,
current_app
.
config
.
get
(
'
SQLALCHEMY_DATABASE_URI
'
))
target_metadata
=
current_app
.
extensions
[
'
migrate
'
].
db
.
metadata
# other values from the config, defined by the needs of env.py,
# can be acquired:
# my_important_option = config.get_main_option("my_important_option")
# ... etc.
# 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.
fileConfig
(
CONFIG
.
config_file_name
)
LOGGER
=
logging
.
getLogger
(
'
alembic.env
'
)
def
run_migrations_offline
():
"""
Run migrations in
'
offline
'
mode.
# Add your model's MetaData object here for 'autogenerate' support.
CONFIG
.
set_main_option
(
'
sqlalchemy.url
'
,
current_app
.
config
.
get
(
'
SQLALCHEMY_DATABASE_URI
'
)
)
TARGET_METADATA
=
current_app
.
extensions
[
'
migrate
'
].
db
.
metadata
# Other values from the config, defined by the needs of env.py, can be acquired:
# my_important_option = config.get_main_option("my_important_option")
# ... etc.
This configures the context with just a URL
and not an Engine, though an Engine is acceptable
here as well. By skipping the Engine creation
we don
'
t even need a DBAPI to be available.
def
run_migrations_offline
():
"""
Run migrations in
'
offline
'
mode.
Calls to context.execute() here emit the given string to the
script output.
This configures the context with just a URL and not an Engine, though an
Engine is acceptable here as well. By skipping the Engine creation we don
'
t
even need a DBAPI to be available.
Calls to context.execute() here emit the given string to the script output.
"""
url
=
config
.
get_main_option
(
"
sqlalchemy.url
"
)
context
.
configure
(
url
=
url
)
url
=
CONFIG
.
get_main_option
(
"
sqlalchemy.url
"
)
context
.
configure
(
url
=
url
)
with
context
.
begin_transaction
():
context
.
run_migrations
()
def
run_migrations_online
():
"""
Run migrations in
'
online
'
mode.
In this scenario we need to create an Engine
and associate a connection with the context.
"""
Run migrations in
'
online
'
mode.
In this scenario we need to create an Engine and associate a connection with
the context.
"""
#
t
his callback is used to prevent an auto-migration from being generated
# when there are no changes to the schema
# reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html
def
process_revision_directives
(
c
onte
xt
,
rev
ision
,
directives
):
if
getattr
(
config
.
cmd_opts
,
'
autogenerate
'
,
False
):
#
T
his callback is used to prevent an auto-migration from being generated
# when there are no changes to the schema
.
#
reference: http://alembic.zzzcomputing.com/en/latest/cookbook.html
def
process_revision_directives
(
c
t
xt
,
rev
,
directives
):
# pylint: disable=locally-disabled,unused-argument
if
getattr
(
CONFIG
.
cmd_opts
,
'
autogenerate
'
,
False
):
script
=
directives
[
0
]
if
script
.
upgrade_ops
.
is_empty
():
directives
[:]
=
[]
logger
.
info
(
'
No changes in schema detected.
'
)
LOGGER
.
info
(
'
No changes in schema detected.
'
)
engine
=
engine_from_config
(
config
.
get_section
(
config
.
config_ini_section
),
prefix
=
'
sqlalchemy.
'
,
poolclass
=
pool
.
NullPool
)
engine
=
engine_from_config
(
CONFIG
.
get_section
(
CONFIG
.
config_ini_section
),
prefix
=
'
sqlalchemy.
'
,
poolclass
=
pool
.
NullPool
)
connection
=
engine
.
connect
()
context
.
configure
(
connection
=
connection
,
target_metadata
=
target_metadata
,
process_revision_directives
=
process_revision_directives
,
**
current_app
.
extensions
[
'
migrate
'
].
configure_args
)
context
.
configure
(
connection
=
connection
,
target_metadata
=
TARGET_METADATA
,
process_revision_directives
=
process_revision_directives
,
**
current_app
.
extensions
[
'
migrate
'
].
configure_args
)
try
:
with
context
.
begin_transaction
():
...
...
This diff is collapsed.
Click to expand it.
scripts/sqldb-migrate.py
+
1
−
1
View file @
66b711e8
...
...
@@ -9,7 +9,7 @@
"""
Utility script for
SQL
database migrations.
Utility script for
metadata
database migrations.
"""
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment