Это аналогично развертыванию списка для использования в предложении python MySQLDB IN и python в запросе sql в качестве параметра , но элементы их списка все целые.
param = []
param.append(post.title)
param.append(post.count_vote)
param.append(post.last_reply_time)
param.append(post.last_replyer_id)
param.append(post.poster_id)
param.append(post.content)
param.append(post.plain_content)
param.append(post.relate_unit)
query = "INSERT INTO post (title, countVote, lastReplyTime, lastReplyerId, posterId, content, plainContent, relateUnit) VALUES ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}');".format(*param)
cursor.execute(query)
Элементы имеют много типов, таких как int, str и None. Что меня удивляет, так это строковый тип, строка может содержать '
и "
. Я просто заменил '
на "
раньше. Однако я случайно увидел фрагмент кода C, например char ch = 'a';
, в поле содержимого. '
замена не подчиняется синтаксису.
Я хочу знать, есть ли способ вставить строку без изменений? Я сталкиваюсь с идеей заменить '
на \'
, это хорошая идея?
Я также пытаюсь заменить {0}
et c. в строке запроса с ?
query = "INSERT INTO post (title, countVote, lastReplyTime, lastReplyerId, posterId, content, plainContent, relateUnit) VALUES (?, ?, ?, ?, ?, ?, ?, ?);"
cursor.execute(query, tuple(param))
# cursor.execute(query, [param,])
Оба дают мне ошибку
_mysql_exceptions.ProgrammingError: not all arguments converted during string formatting