Не удалось вставить пользовательский ввод в базу данных MySQL - PullRequest
0 голосов
/ 05 февраля 2020

Я создал базу данных и вставил какое-то значение, используя python ручной код, но когда я попытался получить ввод от пользователя, а затем вставить этот ввод в свою таблицу базы данных, я потерпел неудачу, так как попробовал много способов. Вот мой код

import mysql.connector

mydb = mysql.connector.connect(
  host="localhost",
  user="root",
  passwd="Adee11ruchi@",
  database="hdatabase"
)

mycursor = mydb.cursor()
name= str(input("What is your first name? "))
address=str(input("enter address:"))

#mycursor.execute("CREATE TABLE customers (name VARCHAR(255), address VARCHAR(255))")
mycursor.execute = ("""INSERT INTO customers (name, address) VALUES (r{}, r{})""".format(name, address))
#val = ('Peter', 'Lowstreet 4')



mydb.commit()
print(mycursor.rowcount, "record inserted.")

Он показывает мне как

What is your first name? diyu
enter address:hiouy
-1 record inserted.

В чем проблема, я не смог выяснить.

1 Ответ

1 голос
/ 05 февраля 2020

Вы должны использовать подготовленное заявление здесь. Рассмотрим эту версию:

mycursor = mydb.cursor(prepared=True)
name = input("What is your first name? ")
address = input("enter address:")

sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"
mycursor.execute = (sql, (name, address,))
mydb.commit()

Основные выводы здесь заключаются в том, что вы оставляете значения для привязки в качестве параметров %s, а затем связываете их как кортеж при вызове cursor#execute. Обратите внимание, что подготовленный API оператора будет обрабатывать правильное форматирование входных данных для вас.

...