python – 以编程方式获取Alembic数据库版本
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – 以编程方式获取Alembic数据库版本,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2613字,纯文字阅读大概需要4分钟。
内容图文
我正试图弄清楚如何使用Alembic获取我的数据库版本.我已经将数据库设置为使用alembic并成功执行了升级和降级.我现在想从我自己的python脚本中获取此版本.
我试图创建一个这样做的功能
def get_current_database_version():
path = os.path.join(os.path.dirname(__file__), os.path.pardir)
alembic_cfg = Config(os.path.join(path, 'alembic.ini'))
current_rev = command.current(alembic_cfg, head_only=True)
return current_rev
此函数返回NoSectionError:No section:’formatters’
然后我去了我的alembic.ini文件,检查它是否有格式化区域.这是我的alembic.ini文件:
# A generic, single database configuration.
[alembic]
# path to migration scripts
script_location = alembic
pyramid_config_file = ../../development.ini
# template used to generate migration files
# file_template = %%(rev)s_%%(slug)s
# 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
sqlalchemy.url = sqlite:///%(here)s/mgo.sqlite
# 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
谁知道我做错了什么?谢谢
编辑:
这是我尝试使用MigrationContext来解决问题:
def get_database_revision():
engine = create_engine("sqlite:///../mgo.db")
conn = engine.connect()
context = MigrationContext.configure(conn)
current_rev = context.get_current_revision()
return current_rev
它连接但没有返回.使用sqlite浏览器我可以看到数据库中的版本未设置为none.
解决方法:
您可以将MigrationContext用于get the current version:
from alembic.migration import MigrationContext
from sqlalchemy import create_engine
engine = create_engine("postgresql://mydatabase")
conn = engine.connect()
context = MigrationContext.configure(conn)
current_rev = context.get_current_revision()
在env.py中你可以使用:
from alembic import context
migration_context = context.get_context()
current_rev = context.get_current_revision()
最后,它基本上归结为连接到数据库并查看alembic_version表.它包含迁移版本作为值,这是数据库当前所在的位置(根据alembic).所以你可以用你想要的任何方式编写代码,只要这最终你正在做什么.
内容总结
以上是互联网集市为您收集整理的python – 以编程方式获取Alembic数据库版本全部内容,希望文章能够帮你解决python – 以编程方式获取Alembic数据库版本所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。