Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

chèn một số bộ giá trị vào bảng trong web2py

Theo mặc định, mật khẩu được băm khi chèn vào auth_user bảng (thông qua trình xác thực biểu mẫu được liên kết với trường mật khẩu). Vì vậy, bạn không muốn chèn SQL tiêu chuẩn của các mật khẩu văn bản thuần túy vào bảng (không chỉ là không an toàn mà còn các lần đăng nhập tiếp theo sẽ không thành công vì Auth đang mong đợi mật khẩu được băm).

Cách dễ nhất để thực hiện băm khi thực hiện chèn hàng loạt là lặp qua các bản ghi và chèn từng bản ghi bằng cách sử dụng .validate_and_insert phương pháp. Thao tác này sẽ chạy tất cả các trình xác thực trường (dẫn đến mật khẩu được băm) và bất kỳ bản ghi nào không xác thực được sẽ đơn giản là không được chèn (vì vậy, ví dụ:tên người dùng trùng lặp sẽ không được chèn vì nó sẽ không xác thực được).

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

Mặc dù quá trình xác thực sẽ tự động từ chối bất kỳ tên người dùng trùng lặp nào, nhưng nếu bạn mong đợi có nhiều trùng lặp và muốn cải thiện hiệu quả, trước tiên bạn có thể chỉ chọn các tên người dùng không trùng lặp từ user bảng:

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)

Ngoài ra, lưu ý rằng theo mặc định, auth_user bảng yêu cầu các giá trị trong first_name , last_nameemail các trường (và địa chỉ email hợp lệ là cần thiết cho một số Auth chức năng, chẳng hạn như đặt lại mật khẩu). Vì vậy, bạn cũng nên lập kế hoạch điền vào các trường đó hoặc đặt requires của chúng thuộc tính cho None để xác nhận không thất bại. Ví dụ:

db.auth_user.first_name.requires = None

Một tùy chọn khác là xác định auth_user tùy chỉnh bảng.



  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 Chọn Dòng Giá trị Cụ thể Mới nhất

  2. SQL:đếm tất cả các bản ghi có giá trị xuất hiện liên tiếp cho từng bộ thiết bị và trả về số lượng cao nhất

  3. Cách tốt nhất để đối phó với lỗi chính tả trong tìm kiếm toàn văn bản MySQL

  4. Sự khác biệt giữa $ http.get và phương thức:'GET'

  5. Làm thế nào để đăng các tham số truy vấn với Axios?