一个简单的sqlalchemy连接配置管理器
db-hooks的Python项目详细描述
db_hooks
非常beta的sqlalchemy和基于toml的sql连接管理器。在
配置文件
db_hooks
在工作目录中的./.databases.toml
查找本地配置文件,然后使用appdirs库查找全局配置文件。在
您可以通过运行$EDITOR
在$EDITOR
中编辑或创建此文件。对我来说,这是维姆。如果不存在配置,它将在默认位置创建一个配置。通常,该位置是以下位置之一:
os | location |
---|---|
linux | ^{ |
osx | ^{ |
windows 10 | ^{ |
此文件的格式目前没有很好的文档记录。了解完整api的最佳位置是the source code。大多数事情的违约都是合理的。在
连接
connections命名空间下TOML文件中的键是连接名。在
连接名称嵌套在connections
命名空间下。下面是连接中各种参数的键/值对。连接支持以下参数:
protocol
-支持的协议。目前:postgres
、mysql
和{}。在 username
-用于登录数据库的用户名。在has_password
-将此标志设置为false
,以禁用自动密码提示。对于支持密码的所有协议,默认值为true
。在host
-数据库主机。在port
-数据库端口。在database
-数据库名称。在password_cmd
-对password_cmd
的特定于连接的重写。默认情况下,连接将使用全局设置password_cmd
。在
对于一个非常简单的示例,本地postgres连接可能如下所示:
[connections.pg_example]protocol="postgres"username="josh"host="localhost"port="5432"database="josh"
密码
db_hooks
包括用于获取连接密码的通用挂钩,旨在适应多个系统。在
顶层配置支持两个相关参数:
password_cmd
-为了获取密码而运行的shell代码段。该命令应将字符串密码打印到stdout。在password_loader
-配置用于运行命令的shell加载程序/解析器。默认为shlex
,但可以设置为bash
或{},以便利用完整的shell语言。在
这两个参数,加上password_cmd
可选覆盖,可以用来嵌入一个获取密码的小片段。在
这是设计来允许最大的灵活性,因此将取决于您的需要。在
例如,您可能希望使用^{
在Windows中,您可能希望使用PowerShell来完成类似的任务:
password_loader="powershell"password_cmd="(Get-Credential -Credential {name}).GetNetworkCredential().Password"
缓存
代码中的连接由db_hooks
使用^{get_engine
两次,则在大多数情况下,它将重用已初始化的引擎,这意味着只会提示您输入一次密码。在
缓存支持四种缓存类型:LRUCache
、RRCache
、TTLCache
和{
默认值为LRUCache
,其中maxsize
为512。这意味着所有连接信息都将被无限期缓存,直到创建了超过512个不同的引擎,在这个引擎中,最近使用过的引擎将被逐出。在
这个API相对不稳定,可能会随着db_hooks
系统在其他语言中的实现而改变。在
在python代码中
一旦配置了连接,就可以使用
get_engine
API:
fromdb_hooksimportget_engineengine=get_engine('pg_example')
这将拉动连接,提示输入密码,并为您提供一个已配置的sqlalchemy引擎。在
cli
db_hooks
公开一个CLI,该CLI将以适合于底层连接的方式启动psql
、mysql
或{db_hooks connect {your_connection_name_here}
连接到此数据库。在
bash完成
db_hooks
支持shell选项卡完成。你可以让我t通过为bash运行eval $(_DB_HOOKS_COMPLETE=source db_hooks)
(大多数Linux发行版和旧版本OSX的默认shell)或eval $(_DB_HOOKS_COMPLETE=source_zsh db_hooks)
(OSX新版本中的默认shell)。很遗憾,不支持PowerShell。有关详细信息,您可以read Click's docs for autocompltion。在
许可
这个库是根据Apache软件许可证授权的。有关详细信息,请参见许可证和通知文件。在
- 项目
标签: