0

Google App Engine で Web アプリの開発を学んでいるのですが、問題が発生しました。私のアプリにはいくつかのデフォルトのユーザーがいて、関数 createDefaultUsers を作成して、Python ファイル内の情報のリストを使用して User テーブルを作成します。この User テーブルを 1 回だけ作成し、アプリを使用するたびにデータをそこに置きたいと考えています。しかし、ご存知のように、createDefaultUsers 関数は私の python ファイルにあるため、アプリを使用するたびに、この User テーブルを何度も作成します。OGM~この問題を解決するにはどうすればよいですか?

別の質問: ローカル データストアをクリアするにはどうすればよいですか? アプリをデバッグするのに役立つかもしれません。

- - - - - - - アップデート - - - - - - - -

たとえば、次のようなデフォルト ユーザーがあります。

defaultUsers = [
('qingWANG','wang123456','wangqing@saad.com','teacher'),
('stevenYANG','123456','yifan@gmail.com','student'),
('jingZHU','zhu123456','zhujing@example.com','student'),
('conghuiHE','he123456','conghui@where.com','student'),
('lianDUAN','duan123456','duanlian@what.com','student'),
('xinHAO','hao123456','haoxin@example.com','student')]

ここにユーザーを作成する私の関数があります:

def createDefaultUsers():
"""
create default user table
"""
for user in defaultUsers:
    users = Users(name = user[0], password = user[1],
                  email = user[2], role = user[3])
    users.put()

私の最初の考えでは、ここに createDefaultUsers を置きます。

def main():
    createDefaultUsers()
    run_wsgi_app(app)
if __name__ == "__main__":
    main()

私のローカルテストでは問題ありません。しかし、これを展開すると機能しません (ユーザーが作成されていないようです)。どこが間違っていますか?

4

1 に答える 1

1

関数を簡単に変更して、既存のユーザーがいるかどうかを確認できます。既存のユーザーがいる場合は、作成しないでください。

def createDefaultUsers():
    """
    create default user table
    """
    user_count = Users.all().count(1)
    if user_count == 0:
        for user in defaultUsers:
            new_user = Users(name = user[0], password = user[1],
                  email = user[2], role = user[3])
            new_user.put()

count()クエリ操作は、実際にデータストアからすべてのエンティティを取得してカウントするため、コストがかかることに注意してください。通常は回避する必要がありますが、制限を0に指定することで、簡単かつ迅速に行うことができます。この場合。

--clear-datastoreコマンドライン引数を開発サーバーに渡すことで、開発データストアを空にすることができます。これがすべてのdev_appserver.py コマンドライン拡張機能です

于 2012-05-02T14:13:36.037 に答える