sql >> Databasteknik >  >> RDS >> Mysql

Mitt program kan inte lagra värden i MySQL med mysql connector lib i Python

Du gör några farliga saker här:

Ingen strängformatering (SQL-injektion)

Du bör inte använda strängformatering på grund av SQL Injection. Det är också mer komplicerat när du har större SQL-kod. Använd förberedda uttalanden som:

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

Skapa inte en ny DB/tabell hela tiden

Din kod är avsedd att misslyckas varje gång eftersom den inte kan skapa en ny db med samma namn om den redan finns. Samma sak med bord. Jag skulle föreslå att du skapar ett installationsskript. Du kan också lägga databasen i kopplingen och behöver inte använda mycursor.execute("USE login;")

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

begå

mysql-anslutaren autocommit inte som standard se:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html

Så du måste göra det själv efter utförandet.

mydb.commit()

Koden ska se ut så här till slut:

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. Star Trek 3D schackdatamodell

  2. Hur REGEXP_LIKE()-funktionen fungerar i MySQL

  3. Finns det något sätt att inte använda hakparenteser i SQL Server?

  4. Ändra en SQL-kolumntitel via fråga