sql >> データベース >  >> RDS >> Mysql

web2pyのテーブルにいくつかのタプルを挿入します

    デフォルトでは、パスワードはauth_userに挿入されるときにハッシュされます テーブル(パスワードフィールドに関連付けられたフォームバリデーターを介して)。したがって、プレーンテキストのパスワードをテーブルに標準SQLで挿入することは望ましくありません(安全でないだけでなく、Authが原因で、その後のログイン試行は失敗します。 ハッシュ化されたパスワードを期待しています。

    一括挿入を行うときにハッシュを実行する最も簡単な方法は、レコードをループして、.validate_and_insertを使用して各レコードを挿入することです。 方法。これにより、すべてのフィールドバリデーターが実行され(パスワードがハッシュされます)、検証に失敗したレコードは挿入されません(たとえば、検証に失敗するため、重複するユーザー名は挿入されません)。

    for user in db(db.user).select():
        db.auth_user.validate_and_insert(username=user.username, password=user.password)
    

    検証プロセスでは重複するユーザー名は自動的に拒否されますが、重複が多いことが予想され、効率を向上させたい場合は、最初にuserから重複していないユーザーのみを選択できます。 テーブル:

    users = db(~db.user.username.belongs(db()._select(db.auth_user.username))).select()
    for user in users:
        db.auth_user.validate_and_insert(username=user.username, password=user.password)
    

    また、デフォルトでは、auth_user テーブルにはfirst_nameの値が必要です 、last_name 、およびemail フィールド(および一部のAuthには有効なメールアドレスが必要です パスワードのリセットなどの機能)。したがって、これらのフィールドにも入力するか、requiresを設定する必要があります。 Noneの属性 したがって、検証は失敗しません。例:

    db.auth_user.first_name.requires = None
    

    別のオプションは、カスタムのauth_userを定義することです。 テーブル。



    1. SQLDeveloperを使用して大量のデータをエクスポートする方法-Oracle

    2. mySqlフェデレーションテーブルがBLOB列を更新できません

    3. 節を持つことで2つの条件を作るにはどうすればよいですか?

    4. Word、Excel、PowerPointでのキーボードのみのナビゲーションの使用(パート3:作業ウィンドウ)