#python #mysql #mysql-connector
Вопрос:
Я пытался сделать эту часть своего проекта уровня А, в котором у меня есть база данных в MyPHPAdmin, и мой код захватывает значение, сравнивает его с заданным значением и, если оно не изменилось, использует это местоположение в базе данных для хранения нового значения. (Я не могу просто вставить новые данные из-за других частей моего кода). Я пытался использовать переменную со значением, сохраненным в ней из поля ввода, однако она отказывается принимать значение. Я перепробовал много вещей, и мне кажется, что я не могу заставить это работать, и, кажется, я получаю разные ошибки каждый раз, когда пытаюсь что-то другое. Я боюсь, что это может быть просто что-то простое, чего мне не хватает, но, хоть убей, я не могу этого понять, и это сводит меня с ума. (Также да, я просмотрел документацию, но она не очень полезна для моей ситуации)
Мой Код:
mycursor = database.cursor(buffered=True)
mycursor.execute("SELECT name FROM creationPokemon")
myresult = mycursor.fetchone()[0]
print(myresult)
if myresult == "Placeholder1":
sql = ("UPDATE creationPokemon SET name = %s WHERE name = %s")
val = ('Placeholder1', cName)
else:
myresult = mycursor.fetchone()[0]
print(myresult)
mycursor.execute(sql)
database.commit()
Ошибка, на которую я наткнулся на этот раз, заключается в следующем:
mysql.connector.errors.ProgrammingError: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s WHERE name = %s' at line 1
Мы очень ценим любую помощь.
Ответ №1:
при использовании кортежей python и mysql connector требуется не менее 2 имен, и вам нужно заполнить оба заполнителя
mycursor = database.cursor(buffered=True)
mycursor.execute("SELECT name FROM creationPokemon")
myresult = mycursor.fetchone()[0]
print(myresult)
if myresult == "Placeholder1":
sql = "UPDATE creationPokemon SET name = %s WHERE name = %s"
val = (cName,cName)
mycursor.execute(sql,val)
database.commit()
else:
myresult = mycursor.fetchone()[0]
print(myresult)
Комментарии:
1. Привет, спасибо за ответ, но это все равно показывает ту же ошибку.
2. я изменил строки soem, так как они имеют больше смысла в этом отношении, я все еще не знаю, откуда берется Cname. Кроме того, ваш запрос на обновление будет иметь смысл только в том случае, если вы выберете только одного покемона или хотите заменить все заполнители, поэтому вам нужен цикл
3. большое спасибо, мне удалось заставить его работать с помощью этого, избавив меня от сильной головной боли