sql >> Databáze >  >> RDS >> Mysql

Můj program není schopen ukládat hodnoty v MySQL pomocí mysql connector lib v Pythonu

Děláte tu nebezpečné věci:

Žádné formátování řetězců (vkládání SQL)

Neměli byste používat formátování řetězce kvůli SQL Injection. Je to také složitější, když máte větší kód SQL. Použijte připravený příkaz jako:

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

Nevytvářejte neustále novou databázi/tabulku

Váš kód je předurčen k selhání pokaždé, protože nemůže vytvořit novou db se stejným názvem, pokud již existuje. To samé se stolem. Doporučuji vytvořit instalační skript. Také můžete umístit databázi do konektoru a nemusíte používat mycursor.execute("USE login;")

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

zavázat se

mysql konektor se ve výchozím nastavení automaticky nepotvrdí, viz:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html

Takže to musíte udělat sami po provedení.

mydb.commit()

Kód by měl na konci vypadat takto:

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. Jak vložit do řádku MYSQL z více polí $_POST

  2. mysql vyberte v seznamu pomocí regulárního výrazu/podřetězce

  3. mysql použijte skupinu po sloupci v podmínce where

  4. Jak opravit stavový kód serveru:302 Found by SQL Inject Me Firefox Addon