Mysql
 sql >> Database >  >> RDS >> Mysql

Il mio programma non è in grado di memorizzare valori in MySQL usando mysql connector lib in Python

Stai facendo cose pericolose qui:

Nessuna formattazione di stringhe (SQL injection)

Non dovresti usare la formattazione delle stringhe a causa di SQL injection. È anche più complicato quando hai un codice SQL più grande. Usa una dichiarazione preparata come:

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

Non creare sempre nuovi DB/tabelle

Il tuo codice è destinato a fallire ogni volta perché non può creare un nuovo db con lo stesso nome se esiste già. Lo stesso con la tavola. Suggerirei di creare uno script di installazione. Inoltre puoi inserire il database nel connettore e non devi usare mycursor.execute("USE login;")

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

impegnati

Il connettore mysql non esegue il commit automatico per impostazione predefinita, vedere:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html

Quindi devi farlo da solo dopo l'esecuzione.

mydb.commit()

Il codice alla fine dovrebbe assomigliare a questo:

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!")