无法将用户输入插入 MySQL 数据库
Failed to insert user input into MySQL database
我已经创建了一个数据库并使用 python 手动代码插入了一些值,但是当我尝试从用户那里获取输入然后将该输入插入到我的数据库时 table,我尝试了很多都失败了方法。
这是我的代码
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.
这是什么问题,我没找到。
你应该在这里使用准备好的语句。考虑这个版本:
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 将为您处理正确的输入格式。
我已经创建了一个数据库并使用 python 手动代码插入了一些值,但是当我尝试从用户那里获取输入然后将该输入插入到我的数据库时 table,我尝试了很多都失败了方法。 这是我的代码
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.
这是什么问题,我没找到。
你应该在这里使用准备好的语句。考虑这个版本:
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 将为您处理正确的输入格式。