gpt4 book ai didi

python - 通过 Elixir 使用多个数据库

转载 作者:太空宇宙 更新时间:2023-11-03 19:39:03 26 4
gpt4 key购买 nike

我想为我的使用 Elixir 进行 ORM 的程序提供数据库。现在数据库文件(我正在使用 SQLite)必须在元数据中硬编码,但我希望能够在 argv 中传递它。有什么办法可以做到这一点吗?

我唯一想到的是:

from sys import argv

metadata.bind = argv[1]

我可以在主脚本中设置它吗?它将在定义任何实体的所有模块中使用?

最佳答案

我有一些代码可以以比仅使用 argv 更好的方式执行此操作

from optparse import OptionParser

parser = OptionParser()
parser.add_option("-u", "--user", dest="user",
help="Database username")
parser.add_option("-p", "--password", dest="password",
help="Database password")
parser.add_option("-D", "--database", dest="database", default="myDatabase",
help="Database name")
parser.add_option("-e", "--engine", dest="engine", default="mysql",
help="Database engine")
parser.add_option("-H", "--host", dest="host", default="localhost",
help="Database host")

(options, args) = parser.parse_args()

def opt_hash(name):
global options
return getattr(options, name)

options.__getitem__ = opt_hash

metadata.bind = '%(engine)s://%(user)s:%(password)s@%(host)s/%(database)s' % options

请注意,使用 opt_hash 的部分有点破解。我使用它是因为 OptionParser 不返回正常的哈希值,而这正是我在最后一行中使用的绑定(bind)字符串的良好性所真正需要的。

关于python - 通过 Elixir 使用多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1606341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com