指向sqlite数据库的相对sqlalchemy路径可以写成:
sqlite:///folder/db_file.db和一个绝对的,如:
sqlite:////home/user/folder/db_file.db有没有可能写一个相对于home的路径?如下所示:
sqlite:///~/folder/db_file.db或者更好的是,path可以包含环境变量吗?
sqlite:////${MY_FOLDER}/db_file.db这是alembic.ini文件的上下文。因此,如果前面的目标不能直接实现,我可以使用变量替换来作弊吗?
[alembic]
script_location = db_versions
sqlalchemy.url = sqlite:///%(MY_FOLDER)s.db
...发布于 2021-03-27 16:39:30
我已经通过在env.py导入config对象后立即修改该对象中的值来解决此问题:
# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config
# import my custom configuration
from my_app import MY_DB_URI
# overwrite the desired value
config.set_main_option("sqlalchemy.url", MY_DB_URI)现在config.get_main_option("sqlalchemy.url")返回您想要的MY_DB_URI。
发布于 2021-08-25 16:04:12
正如其他人所指出的,一个键是相对的3个斜杠,绝对的4个斜杠。
但我需要的不仅仅是这些..。
在处理字符串时遇到问题,我不得不这样做:
db_dir = "../../database/db.sqlite"
print(f'os.path.abspath(db_dir): {str(os.path.abspath(db_dir))}')
SQLALCHEMY_DATABASE_URI = "sqlite:///" + os.path.abspath(db_dir) # works
# SQLALCHEMY_DATABASE_URI = "sqlite:///" + db_dir # fails发布于 2019-12-02 20:40:48
来自alembic documentation (重点是我的):
sqlalchemy.url -通过SQLAlchemy连接到数据库的URL。该配置值仅在env.py文件调用它们时使用;在“通用”模板中,在run_migrations_offline()函数中对config.get_main_option("sqlalchemy.url")的调用和对engine_from_config(prefix=“sqlalchemy”)的调用。在run_migrations_online()函数中是引用此键的位置。如果SQLAlchemy URL应来自其他来源,例如来自环境变量或全局注册表,或者如果迁移环境使用多个数据库URL,鼓励开发人员更改env.py文件以使用任何适当的方法来获取一个或多个数据库URL。
因此,在这种情况下,sqlalchemy url格式可以由python本身循环生成。
https://stackoverflow.com/questions/59109682
复制相似问题