MySQL 使用 mysql.connector 时出现错误 1064 (42000)
MySQL error 1064 (42000) when using mysql.connector
当前收到错误“mysql.connector.errors.ProgrammingError: 1064 (42000): 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册当我 运行 此代码时,在第 1 行的 '%s)' 附近使用正确的语法:
def initiate_sale():
while True:
cx_shopped_before = input('Has customer shopped with us before? Y/N: ')
if cx_shopped_before.upper() == 'Y':
cust_email = input('Please enter customers email address')
with mysql.connector.connect(host=HOSTNAME, user=USER_NAME, password=PASSWORD) as mysql_connection:
with mysql_connection.cursor() as mysql_cursor:
mysql_cursor.execute('USE florist')
query = "SELECT CusID, cus_fname, cus_lname FROM customer WHERE cus_email = (%s)"
mysql_cursor.execute(query, cust_email)
break
elif cx_shopped_before.upper() == 'N':
pass
else:
print('Invalid choice, use Y or N')
我认为它是一个简单的括号或逗号,因为它只是执行语句中元组中的一个项目,但我找不到位置。提前致谢
我可能是错的,但我认为您不需要 %s
两边的括号
query = "SELECT CusID, cus_fname, cus_lname FROM customer WHERE cus_email = %s"
尝试 mysql_cursor.execute(query, tuple(cust_email))
而不是 mysql_cursor.execute(query, cust_email)
。
用元组代替pace holder,至少需要atm 2维
query = """SELECT CusID, cus_fname, cus_lname FROM customer WHERE cus_email = (%s)"""
mysql_cursor.execute(query, (cust_email,))
当前收到错误“mysql.connector.errors.ProgrammingError: 1064 (42000): 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本对应的手册当我 运行 此代码时,在第 1 行的 '%s)' 附近使用正确的语法:
def initiate_sale():
while True:
cx_shopped_before = input('Has customer shopped with us before? Y/N: ')
if cx_shopped_before.upper() == 'Y':
cust_email = input('Please enter customers email address')
with mysql.connector.connect(host=HOSTNAME, user=USER_NAME, password=PASSWORD) as mysql_connection:
with mysql_connection.cursor() as mysql_cursor:
mysql_cursor.execute('USE florist')
query = "SELECT CusID, cus_fname, cus_lname FROM customer WHERE cus_email = (%s)"
mysql_cursor.execute(query, cust_email)
break
elif cx_shopped_before.upper() == 'N':
pass
else:
print('Invalid choice, use Y or N')
我认为它是一个简单的括号或逗号,因为它只是执行语句中元组中的一个项目,但我找不到位置。提前致谢
我可能是错的,但我认为您不需要 %s
query = "SELECT CusID, cus_fname, cus_lname FROM customer WHERE cus_email = %s"
尝试 mysql_cursor.execute(query, tuple(cust_email))
而不是 mysql_cursor.execute(query, cust_email)
。
用元组代替pace holder,至少需要atm 2维
query = """SELECT CusID, cus_fname, cus_lname FROM customer WHERE cus_email = (%s)"""
mysql_cursor.execute(query, (cust_email,))