sql >> Databasteknik >  >> RDS >> Mysql

infoga några tupler i tabellen i web2py

Som standard hashas lösenord när de infogas i auth_user tabell (via en formulärvalidator kopplad till lösenordsfältet). Så, du vill inte göra en standard SQL-infogning av vanlig textlösenord i tabellen (inte bara är det osäkert, utan efterföljande försök till inloggning kommer att misslyckas eftersom Auth förväntar sig hashade lösenord).

Det enklaste sättet att få hashningen gjort när du gör massinsättningar är att gå igenom posterna och infoga var och en med hjälp av .validate_and_insert metod. Detta kommer att köra alla fältvaliderare (vilket kommer att resultera i att lösenorden hashas), och alla poster som misslyckas med validering kommer helt enkelt inte att infogas (så till exempel kommer ett dubblett användarnamn inte att infogas eftersom det kommer att misslyckas med valideringen).

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

Även om valideringsprocessen automatiskt avvisar alla dubbletter av användarnamn, om du förväntar dig många dubbletter och vill förbättra effektiviteten, kan du först välja de icke-duplicerade från user tabell:

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)

Observera också att auth_user som standard Tabellen kräver värden i first_name , last_name och email fält (och en giltig e-postadress krävs för en del av Auth funktionalitet, som att återställa lösenordet). Så du bör antingen planera att fylla i dessa fält också, eller på annat sätt ställa in deras requires attribut till None så valideringen misslyckas inte. Till exempel:

db.auth_user.first_name.requires = None

Ett annat alternativ är att definiera en anpassad auth_user bord.



  1. Vilolägessekvens genererades inte

  2. Ta reda på vilket operativsystem SQL Server körs på (T-SQL-exempel)

  3. Hur man får id från databasen genom att klicka på listview-objektet i Android

  4. Hur ska jag lagra en GUID i Oracle?