一个简单的sqlalchemy连接配置管理器

db-hooks的Python项目详细描述


db_hooks

非常beta的sqlalchemy和基于toml的sql连接管理器。在

配置文件

db_hooks在工作目录中的./.databases.toml查找本地配置文件,然后使用appdirs库查找全局配置文件。在

您可以通过运行$EDITOR$EDITOR中编辑或创建此文件。对我来说,这是维姆。如果不存在配置,它将在默认位置创建一个配置。通常,该位置是以下位置之一:

oslocation
linux^{}
osx^{}
windows 10^{}

此文件的格式目前没有很好的文档记录。了解完整api的最佳位置是the source code。大多数事情的违约都是合理的。在

连接

connections命名空间下TOML文件中的键是连接名。在

连接名称嵌套在connections命名空间下。下面是连接中各种参数的键/值对。连接支持以下参数:

  • protocol-支持的协议。目前:postgresmysql和{}。在
  • 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可选覆盖,可以用来嵌入一个获取密码的小片段。在

这是设计来允许最大的灵活性,因此将取决于您的需要。在

例如,您可能希望使用^{}读取密码:

^{pr2}$

在Windows中,您可能希望使用PowerShell来完成类似的任务:

password_loader="powershell"password_cmd="(Get-Credential -Credential {name}).GetNetworkCredential().Password"

缓存

代码中的连接由db_hooks使用^{}缓存。这意味着,如果使用相同的连接名调用get_engine两次,则在大多数情况下,它将重用已初始化的引擎,这意味着只会提示您输入一次密码。在

缓存支持四种缓存类型:LRUCacheRRCacheTTLCache和{}。每个参数都有一个关键字参数的集合,这些参数直接传递给相应的构造函数。在

默认值为LRUCache,其中maxsize为512。这意味着所有连接信息都将被无限期缓存,直到创建了超过512个不同的引擎,在这个引擎中,最近使用过的引擎将被逐出。在

这个API相对不稳定,可能会随着db_hooks系统在其他语言中的实现而改变。在

在python代码中

一旦配置了连接,就可以使用 get_engineAPI:

fromdb_hooksimportget_engineengine=get_engine('pg_example')

这将拉动连接,提示输入密码,并为您提供一个已配置的sqlalchemy引擎。在

cli

db_hooks公开一个CLI,该CLI将以适合于底层连接的方式启动psqlmysql或{}。您可以通过运行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软件许可证授权的。有关详细信息,请参见许可证和通知文件。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在电子表格控件SFX中的GridBase的setCellValue方法中迭代List<String>中的值?   不使用method参数的java接口实现   java如何将数据集字符串类型转换为行类型?   缓冲数字签名/验证非常大的文件Java   netbeans如何在没有生成文件的情况下运行Java项目   java使用Selenium在Chrome浏览器中保存文档   java如何使用异步任务关闭进度对话框并避免“您的活动是否正在运行错误?”   java如何在对话函数中对齐消息并重用该函数?   使用XStream对静态类型进行java解组   java Arcgis Esri没有在安卓设备上显示地图   java使用服务器socket接受客户端请求   java解析连字符xml标记   java在HTTP post中发布什么   Java为每个循环访问索引   java应该使用什么方法?   gwt Java`instanceof`和onFailure中可丢弃的组件   java可滚动组合自动调整swt大小   安卓 Java循环故障排除   java 安卓。小装置。无法将TextView转换为安卓。小装置。编辑文本5