Я отвечу на свой вопрос, благодаря комментарию от roganjosh. Цель (box,)
- сделать его кортежем.
Еще раз спасибо roganjosh, причина для того, чтобы сделать его кортежом, состоит в том, что курсор ожидает, что будет предоставлена последовательность параметров, и, естественно, распаковывает любой заданный аргумент. В случае единственного параметра, который оказывается строкой, он начнет распаковывать эту строку и обнаружит, что ее недостаточно? для размещения каждого персонажа. После того, как вы предоставите одноэлементный кортеж, он найдет полную строку в первом индексе, а затем больше ничего не будет распаковано. В этом случае это итерация контейнера, а не строки
box = 'XDS.SI'
sqlite_cur.execute('''
SELECT id from box_infos WHERE box = ?;
''', (box,)
)