nixbox
@nixbox

Как исправить ошибку при попытке добавления строки в mysql: TypeError: must be string or read-only buffer, not tuple?

Всем привет!
Неизбежно получаю ошибку:

TypeError: must be string or read-only buffer, not tuple.


Код:
for ii in profiles_groups:
          cntr+=1
          name = ii["name"]
          gid = ii["gid"]
          screen_name = ii["screen_name"]

          print(type(name))
          print(type(gid))
          print(type(name))

          sql = "INSERT INTO groups(group_id, group_name, short_link) VALUES (%s, %s, %s)", (gid, name, screen_name)

          cursor.execute(sql)
          db.commit()

db.close()


При этом все переменные - строки:

<type 'str'>
<type 'str'>
<type 'str'>
  • Вопрос задан
  • 411 просмотров
Решения вопроса 1
sim3x
@sim3x
Так делать НЕ нужно
Тут не пхп
sql = "INSERT INTO groups(group_id, group_name, short_link) VALUES (%s, %s, %s)" , (gid, name, screen_name)
print(type(sql))

sql = "INSERT INTO groups(group_id, group_name, short_link) VALUES (%s, %s, %s)" % (gid, name, screen_name)
print(type(sql))


Нужно делать через
https://dev.mysql.com/doc/connector-python/en/conn...

sql = "INSERT INTO groups(group_id, group_name, short_link) VALUES (%s, %s, %s)" 

cursor.execute(sql, (gid, name, screen_name))


или так
sql_prepared_text = "INSERT INTO groups(group_id, group_name, short_link) VALUES (%s, %s, %s)",  (gid, name, screen_name)

cursor.execute(*sql_prepared_text)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы