LINUX.ORG.RU

TypeError: not all arguments converted during string formatting

 ,


0

1
cur.execute("SELECT * FROM "+source+" LIMIT %s, 300", (i))
rows = cur.fetchall()
curBB.executemany("INSERT INTO "+dest+" (id, bookmakerId, playTypeId, marketTypeId, resultTypeId, competitionId, competition, runner_id, runnerName, datetime, team1, team2, koef, url, link_attr_name, link_attr_value, created_at, updated_at) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", rows)



Приводит к ошибке
TypeError: not all arguments converted during string formatting

Как с этим справиться?

★★★★★

А на какой именно строке ошибка? Во-первых, должно было LIMIT %s, 300", (i,))

pawnhearts ★★★★★
()

cur.execute(«SELECT * FROM »+source+" LIMIT %s, 300", (i))

Если ты хочешь строку сформировать, то надо делать так:

cur.execute("SELECT * FROM "+source+" LIMIT %s, 300" % i)
А еще лучше вот так:

data = {'source': sorce, 'limit': i}
query = "SELECT * FROM {source} LIMIT {limit}, 300"
cur.execute(query.format(**data))
Siado ★★★★★
()

В общем-то заработало. Что-то сделал, а что не понял)

Qwentor ★★★★★
() автор топика
Ответ на: комментарий от Qwentor

У тебя всё ок, только запятой при передаче тапла с аргументами не хватает, и cur.execute() ругается что не может каждую букву из i вставить в «SELECT * FROM »+source+" LIMIT %s, 300". В первом ответе тебе уже написали про это.

ei-grad ★★★★★
()
Последнее исправление: ei-grad (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.