Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

insira algumas tuplas na tabela no web2py


Por padrão, as senhas são criptografadas quando inseridas no auth_user table (através de um validador de formulário associado ao campo de senha). Portanto, você não deseja fazer uma inserção SQL padrão das senhas de texto simples na tabela (não apenas isso é inseguro, mas as tentativas subsequentes de login falharão porque Auth está esperando senhas com hash).

A maneira mais fácil de fazer o hashing ao fazer inserções em massa é percorrer os registros e inserir cada um usando o .validate_and_insert método. Isso executará todos os validadores de campo (o que resultará no hash das senhas) e quaisquer registros que falharem na validação simplesmente não serão inseridos (assim, por exemplo, um nome de usuário duplicado não será inserido porque falhará na validação).
for user in db(db.user).select():
    db.auth_user.validate_and_insert(username=user.username, password=user.password)

Embora o processo de validação rejeite automaticamente qualquer nome de usuário duplicado, se você espera muitas duplicatas e deseja melhorar a eficiência, você pode primeiro selecionar apenas os não duplicados do user tabela:
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)

Além disso, observe que, por padrão, o auth_user tabela requer valores no first_name , last_name e email campos (e um endereço de e-mail válido é necessário para alguns dos campos Auth funcionalidade, como redefinir a senha). Portanto, você deve planejar preencher esses campos também ou definir seus requires atributos para None para que a validação não falhe. Por exemplo:
db.auth_user.first_name.requires = None

Outra opção é definir um auth_user personalizado tabela.