Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Program saya tidak dapat menyimpan nilai di MySQL menggunakan konektor mysql lib dengan Python

Anda melakukan beberapa hal berbahaya di sini:

Tanpa pemformatan String (Injeksi SQL)

Anda tidak boleh menggunakan pemformatan String karena SQL Injection. Ini juga lebih rumit ketika Anda memiliki kode SQL yang lebih besar. Gunakan Pernyataan yang sudah disiapkan seperti:

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

Jangan selalu membuat DB/Tabel baru

Kode Anda ditakdirkan untuk gagal setiap saat karena tidak dapat membuat db baru dengan nama yang sama jika sudah ada. Begitu pula dengan meja. Saya akan menyarankan untuk membuat skrip pengaturan. Anda juga dapat meletakkan database di konektor dan tidak harus menggunakan mycursor.execute("USE login;")

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

berkomitmen

konektor mysql tidak autocommit secara default lihat:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html

Jadi Anda harus melakukannya sendiri setelah eksekusi.

mydb.commit()

Kode akan terlihat seperti ini pada akhirnya:

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. tampilan hari melalui prosedur tersimpan

  2. 9 fungsi tanggal MySQL yang sangat berguna yang mudah diingat

  3. Akses ditolak untuk 'pengguna'@'localhost'

  4. Array Multi-Dimensi dari pencocokan kolom mysql

  5. SQL SELECT dengan hubungan m:n