sql >> Database >  >> RDS >> Mysql

Mijn programma kan geen waarden opslaan in MySQL met behulp van mysql connector lib in Python

Je doet hier gevaarlijke dingen:

Geen tekenreeksopmaak (SQL-injectie)

U moet geen String-opmaak gebruiken vanwege SQL-injectie. Het is ook ingewikkelder als je grotere SQL-code hebt. Gebruik voorbereide verklaring zoals:

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

Maak DB/Tabel niet altijd nieuw

Uw code is voorbestemd om elke keer te mislukken omdat het geen nieuwe db met dezelfde naam kan maken als deze al bestaat. Hetzelfde met tafel. Ik stel voor om een ​​setup-script te maken. Ook kunt u de database in de connector plaatsen en hoeft u mycursor.execute("USE login;") niet te gebruiken

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

vastleggen

mysql-connector wordt standaard niet automatisch vastgelegd, zie:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html

Je moet het dus zelf doen na de uitvoering.

mydb.commit()

De code zou er uiteindelijk zo uit moeten zien:

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. Update zonder waar-clausule

  2. MariaDB UCASE() uitgelegd

  3. Java:Blob lezen vanuit Oracle

  4. MySQL-GROEP OP NULL en LEEG