Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用fabric操作数据库连接_Python_Deployment_Fabric - Fatal编程技术网

Python 使用fabric操作数据库连接

Python 使用fabric操作数据库连接,python,deployment,fabric,Python,Deployment,Fabric,我刚刚开始使用Fabric来更好地控制测试和部署环境的特定设置,我正在尝试了解交换配置的最佳方法 假设我的应用程序中有一个模块,它定义了一个简单的数据库连接和一些默认身份验证常量: host = 'db.host.com' user = 'someuser' passw = 'somepass' db = 'somedb' class DB(): def __init__(self,host=host,user=user,passw=passw,db=db,cursor='DictCurs

我刚刚开始使用Fabric来更好地控制测试和部署环境的特定设置,我正在尝试了解交换配置的最佳方法

假设我的应用程序中有一个模块,它定义了一个简单的数据库连接和一些默认身份验证常量:

host = 'db.host.com'
user = 'someuser'
passw = 'somepass'
db = 'somedb'

class DB():
  def __init__(self,host=host,user=user,passw=passw,db=db,cursor='DictCursor'):
    #make a database connection here and all that jazz
在找到fabric之前,我会使用
socket
库中的
getfqdn()
函数来检查系统被推送到的主机的域名,然后对身份验证凭据进行条件化

if getfqdn() == 'test.somedomain.com':
  host = 'db.host.com'
  user = 'someuser'
  passw = 'somepass'
  db = 'somedb'
elif getfqdn() == 'test.someotherdomain.com':
  host = 'db.other.com'
  user = 'otherguy'
  passw = 'otherpass'
  db = 'somedb'
出于显而易见的原因,这真的不是那么好。我想知道的是,在Fabric中调整类似内容的最聪明的方法是什么,这样当项目被推送到某个测试/部署服务器时,这些值在推后更改

我可以通过查看文档想到一些方法。我是否应该有一个文件,只定义Fabric可以根据部署内容使用shell命令输出到的常量,然后定义数据库处理程序的文件可以导入这些常量?像这样从文件中运行
open
write
有意义吗?我假设我还必须
.gitignore
这些类型的文件,这样它们就不会提交到repo中,而只是依靠Fabric来部署它们


我计划对我当前使用
getfqdn
交换或手动调整的所有配置设置采用建议的最佳方法。谢谢

您可以在env.host上完成所有这些操作,然后使用类似的方法渲染conf文件并将其向上推。但是在这些情况下,模板是最好的(请参见:puppet和其他配置管理器)

您可以在env.host上完成所有这些操作,然后使用类似于渲染conf文件并将其向上推。但是模板在这些实例中是最好的(请参见:puppet和其他配置管理器)

谢谢-使用此选项,我决定让Fabric输出一些json作为配置,并重构代码以实现此目的。谢谢-使用此选项,我决定让Fabric输出一些json作为配置,并重构代码以实现此目的。