Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Meu programa não está conseguindo armazenar valores no MySQL usando o conector mysql lib em Python


Você está fazendo algumas coisas perigosas aqui:

Sem formatação de string (injeção de SQL)

Você não deve usar a formatação String por causa de SQL Injection. Também é mais complicado quando você tem um código SQL maior. Use declaração preparada como:
query = "INSERT INTO id(email,passw) VALUES(%s,%s)"
args = (email, passw)
mycursor.execute(query, args)

Não crie banco de dados/tabela novo o tempo todo

Seu código está destinado a falhar todas as vezes porque não pode criar um novo banco de dados com o mesmo nome se já existir. O mesmo com a mesa. Sugiro criar um script de configuração. Além disso, você pode colocar o banco de dados no conector e não precisa usar mycursor.execute("USE login;")
mydb = mysql.connector.connect(
    host="localhost",
    user="root",
    passwd="",
    database='login'
)

comprometer

O conector mysql não se autocommit por padrão, veja:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html

Então você tem que fazer isso sozinho após a execução.
mydb.commit()

O código deve ficar assim no 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!")