sql >> Database >  >> RDS >> Mysql

voeg enkele tuples in de tabel in web2py in

Standaard worden wachtwoorden gehasht wanneer ze worden ingevoerd in de auth_user tabel (via een formuliervalidator die is gekoppeld aan het wachtwoordveld). U wilt dus geen standaard SQL-invoeging van de wachtwoorden in platte tekst in de tabel doen (niet alleen is dat onveilig, maar volgende pogingen om in te loggen zullen mislukken omdat Auth verwacht gehashte wachtwoorden).

De eenvoudigste manier om de hashing uit te voeren wanneer u bulk-inserts doet, is door de records te doorlopen en ze allemaal in te voegen met behulp van de .validate_and_insert methode. Hierdoor worden alle veldvalidators uitgevoerd (waardoor de wachtwoorden worden gehasht), en alle records die de validatie niet doorstaan, worden gewoon niet ingevoegd (zo wordt er bijvoorbeeld geen dubbele gebruikersnaam ingevoegd omdat de validatie mislukt).

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

Hoewel het validatieproces automatisch dubbele gebruikersnamen afwijst, kunt u, als u veel dubbele gebruikers verwacht en de efficiëntie wilt verbeteren, eerst alleen de niet-dubbele gebruikersnamen van de user selecteren. tafel:

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)

Merk ook op dat standaard de auth_user tabel vereist waarden in de first_name , last_name , en email velden (en een geldig e-mailadres is nodig voor sommige van de Auth functionaliteit, zoals het opnieuw instellen van het wachtwoord). U moet dus ofwel van plan zijn om die velden ook in te vullen, of anderszins hun requires in te stellen attributen aan None dus validatie mislukt niet. Bijvoorbeeld:

db.auth_user.first_name.requires = None

Een andere optie is om een ​​aangepaste auth_user te definiëren tafel.



  1. Verkrijg MySQL-database-uitvoer via PHP naar XML

  2. MySQL:retourneer alleen het laatste bericht in de platte/gespreksberichtentabel

  3. Huidige datum in MySQL WHERE-clausule

  4. Azure-automatiseringsmethoden