我有一些代码比只使用 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 的部分有点 hack。我使用它是因为 OptionParser 不返回正常的哈希值,而这正是我在最后一行中使用的绑定字符串所需要的。