Mysql
 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да вмъкна текст в оператора mysql SELECT и да покажа изход в изречение?

  2. Как да създадете mysql kubernetes услуга с локално монтиран обем данни?

  3. Как да използвам израз IF в заявка за присъединяване към MySQL?

  4. Presto еквивалент на MySQL group_concat

  5. SQLSTATE[23000]:Нарушение на ограничението за целостта:1048 Колона „публикация“ не може да бъде нула