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

Chương trình của tôi không thể lưu trữ các giá trị trong MySQL bằng cách sử dụng trình kết nối mysql lib trong Python

Bạn đang làm một số việc nguy hiểm ở đây:

Không có định dạng chuỗi (SQL Injection)

Bạn không nên sử dụng định dạng chuỗi vì SQL Injection. Nó cũng phức tạp hơn khi bạn có mã SQL lớn hơn. Sử dụng Tuyên bố đã chuẩn bị sẵn như:

query = "INSERT INTO id(email,passw) VALUES(%s,%s)"
args = (email, passw)
mycursor.execute(query, args)

Không tạo DB / Bảng mới mọi lúc

Mã của bạn luôn bị lỗi vì nó không thể tạo một db mới có cùng tên nếu nó đã tồn tại. Với bảng cũng vậy. Tôi sẽ đề nghị tạo một kịch bản thiết lập. Ngoài ra, bạn có thể đặt cơ sở dữ liệu trong trình kết nối và không phải sử dụng mycursor.execute("USE login;")

mydb = mysql.connector.connect(
    host="localhost",
    user="root",
    passwd="",
    database='login'
)

cam kết

Trình kết nối mysql không tự động gửi theo mặc định, hãy xem: https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html

Vì vậy, bạn phải tự làm sau khi thực hiện.

mydb.commit()

Cuối cùng thì mã sẽ trông như thế này:

import mysql.connector

mydb = mysql.connector.connect(
    host="localhost",
    user="root",
    passwd="",
    database='login'
)

mycursor = mydb.cursor()

# sign up
email = input("Your email: ")
passw = input("Your password: ")
confirm_pass = input("Confirm password: ")

if passw == confirm_pass:
    print("Successfuly registered!")

    query = "INSERT INTO id(email,passw) VALUES(%s,%s)"
    args = (email, passw)
    mycursor.execute(query, args)
    mydb.commit()

else:
    print("wrong password!")



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi sql:Việc chuyển đổi kiểu dữ liệu varchar thành kiểu dữ liệu datetime dẫn đến giá trị nằm ngoài phạm vi

  2. Làm thế nào để sử dụng một hàm SQL với INNER JOIN trong MySQL?

  3. Thay thế ký tự đại diện MySQL

  4. Tăng tốc perl DBI fetchrow_hashref

  5. MySQL - cách lưu trữ thời gian với múi giờ chính xác? (từ Java)