sql >> Base de Datos >  >> RDS >> Mysql

Mi programa no puede almacenar valores en MySQL usando mysql connector lib en Python

Estás haciendo cosas peligrosas aquí:

Sin formato de cadena (inyección SQL)

No debe usar el formato de cadena debido a la inyección de SQL. También es más complicado cuando tienes un código SQL más grande. Use declaraciones preparadas como:

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

No cree bases de datos/tablas nuevas todo el tiempo

Su código está destinado a fallar cada vez porque no puede crear una nueva base de datos con el mismo nombre si ya existe. Lo mismo con la mesa. Sugeriría crear un script de configuración. También puede poner la base de datos en el conector y no tiene que usar mycursor.execute("USE login;")

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

comprometerse

El conector mysql no se confirma automáticamente de forma predeterminada, consulte:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html

Así que tienes que hacerlo tú mismo después de la ejecución.

mydb.commit()

El código debería verse así al final:

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