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

Mit program er ikke i stand til at gemme værdier i MySQL ved hjælp af mysql connector lib i Python

Du laver nogle farlige ting her:

Ingen strengformatering (SQL-injektion)

Du bør ikke bruge String-formatering på grund af SQL Injection. Det er også mere kompliceret, når du har større SQL-kode. Brug forberedt erklæring som:

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

Opret ikke DB/tabel ny hele tiden

Din kode er bestemt til at fejle hver gang, fordi den ikke kan oprette en ny db med samme navn, hvis den allerede eksisterer. Det samme med bord. Jeg vil foreslå at oprette et opsætningsscript. Du kan også lægge databasen i stikket og behøver ikke at bruge mycursor.execute("USE login;")

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

forpligte

mysql-forbindelsen autocommiterer ikke som standard se:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html

Så du skal selv gøre det efter udførelsen.

mydb.commit()

Koden skulle se sådan ud til sidst:

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. Sorter SQL-poster baseret på matchede betingelser

  2. Sådan fungerer ON CONFLICT i SQLite

  3. Hvad er forskellen mellem at bruge og tænde i table joins i MySQL?

  4. java.sql.SQLException:Ukendt systemvariabel 'query_cache_size'