Mysql
 sql >> Baza danych >  >> RDS >> Mysql

wstaw kilka krotek do tabeli w web2py

Domyślnie hasła są haszowane po wstawieniu do auth_user tabeli (poprzez walidator formularzy powiązany z polem hasła). Więc nie chcesz robić standardowego wstawiania SQL haseł w postaci zwykłego tekstu do tabeli (jest to nie tylko niepewne, ale kolejne próby logowania kończą się niepowodzeniem, ponieważ Auth oczekuje zaszyfrowanych haseł).

Najłatwiejszym sposobem wykonania haszowania podczas wstawiania zbiorczego jest przechodzenie przez pętlę rekordów i wstawianie każdego z nich za pomocą .validate_and_insert metoda. Spowoduje to uruchomienie wszystkich walidatorów pól (co spowoduje zahaszowanie haseł), a wszelkie rekordy, które nie przejdą weryfikacji, po prostu nie zostaną wstawione (więc na przykład zduplikowana nazwa użytkownika nie zostanie wstawiona, ponieważ nie powiedzie się weryfikacja).

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

Chociaż proces walidacji automatycznie odrzuci wszystkie zduplikowane nazwy użytkowników, jeśli spodziewasz się wielu duplikatów i chcesz poprawić wydajność, możesz najpierw wybrać tylko nieduplikaty od 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)

Pamiętaj też, że domyślnie auth_user tabela wymaga wartości w first_name , last_name i email pola (i poprawny adres e-mail jest potrzebny dla niektórych Auth funkcje, takie jak resetowanie hasła). Dlatego powinieneś albo zaplanować wypełnienie tych pól, albo w inny sposób ustawić ich requires atrybuty na None więc walidacja nie kończy się niepowodzeniem. Na przykład:

db.auth_user.first_name.requires = None

Inną opcją jest zdefiniowanie niestandardowego auth_user tabeli.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ukryć procedurę składowaną mysql

  2. Uzyskiwanie wyników Mysql bez znajomości nazwy kolumny

  3. BŁĄD 1005 (HY000):Nie można utworzyć tabeli x (errno:-1)

  4. Zapytanie SQL działające w phpmyadmin, ale nie w php

  5. java.sql.SQLException:pole 'id' nie ma wartości domyślnej