4

通常のAPIRestサービスがフラスコを介して管理しているSQLデータベースにアクセスするために、フラスコスクリプトパッケージを使用してコマンドラインpythonスクリプトを作成しました。スクリプト コマンドのパラメーターの設定に問題があります。特に:

a) @manager.options 行内でデフォルト値を設定する方法

b) フラグの立て方

私は次のようなことを試しました:

@manager.option('-m', '--credit', dest='credit', default=-1, help='regular value')
@manager.option('--useCredit', dest='useCredit', default=False, help='boolean')
def newClient(credit=100, useCredit=False):

これを関数変数に追加することでデフォルト値を「ハック」することができましたが、@manager.option の「デフォルト」パラメータが何のためのものかわかりません。さらに、useCredit は常に値を要求しますが、どうすればそれをフラグにできますか?

アップデート

@carlos の回答のおかげで、manager.option コマンド内でデフォルト パラメータを設定するように機能するため、間違ってテストしていたに違いないことに気付きました。関数定義に配置した値 (def newClient(credit=100, useCredit=False) は無視されるようです。システムによる警告またはエラーが予想されていました...

4

1 に答える 1

2

問題がどこにあるのかよくわかりませんが、コードの簡単なモックアップを行っても、あなたと同じエラーが発生するようには見えませんでした:

from flask.ext.script import Manager
from flask import Flask

app = Flask(__name__)

manager = Manager(app)

@manager.option('-m', '--credit', dest='credit', default=-1)
@manager.option('-u', '--use_credit', dest='use_credit', default=False)
def new_client(credit, use_credit):
    if credit is None:
        print "credit is", credit
    else:
        print "credit is", credit, "with use_credit", use_credit

if __name__ == "__main__":
    manager.run()

結果の出力:

ここに画像の説明を入力

于 2015-03-16T06:22:38.990 に答える