Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Mój program nie może przechowywać wartości w MySQL przy użyciu biblioteki łączników mysql w Pythonie

Robisz tutaj niebezpieczne rzeczy:

Brak formatowania ciągów (wstrzyknięcie SQL)

Nie należy używać formatowania ciągów ze względu na wstrzyknięcie SQL. Jest to również bardziej skomplikowane, gdy masz większy kod SQL. Użyj przygotowanego Oświadczenia, takiego jak:

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

Nie twórz cały czas bazy danych/tabeli

Twój kod jest skazany na niepowodzenie za każdym razem, ponieważ nie może utworzyć nowej bazy danych o tej samej nazwie, jeśli już istnieje. To samo ze stołem. Proponuję stworzyć skrypt instalacyjny. Możesz także umieścić bazę danych w konektorze i nie musisz używać mycursor.execute("USE login;")

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

zatwierdź

mysql łącznik domyślnie nie jest automatycznie zatwierdzany, zobacz:https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html

Musisz więc zrobić to sam po egzekucji.

mydb.commit()

Na końcu kod powinien wyglądać tak:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Skrót do aktualizacji wiersza tabeli w bazie danych?

  2. Używanie poprawnego lub preferowanego, nierównego operatora w MySQL

  3. Wyszukiwanie PHP Mysql między dwiema datami

  4. Javascript wysyła dane przez POST w dodatku do firefox

  5. Jak sobie z tym poradzić Serwer MySQL działa z opcją --secure-file-priv, więc nie może wykonać tej instrukcji na komputerze Mac