Я решил сделать себе веселый вечер и переношу один проект с python2 на 3,
Есть такой маленький кусочек кода-условия,  он проверяет создан ли уже хеш файла, если нет добавляет его в бд sqlite (я не знаю синтаксис баз данных, лишь поверхностно и всегда использую какие то оболочки для работы с ними)
в самом файле встречается запрос, который мне кажется не правильным(хоть я и не разбираюсь)
query = "INSERT INTO files (%s) VALUES (?, ?)" % (keys);
ругается на этой строчке 
file_id = db.add_file(filename, file['file_hash'])
текст ругани 
self.cur.execute(query, values)
ValueError: parameters are of unsupported typе
Собственно она приходит нам из функции:
def add_song(self, filename, filehash):
    file = self.get_file_by_filehash(filehash)
    if not file:
    	################ вот тут где  insert
      file_id = self.insert(self.TABLE_FILESS, {
        "name": filename,
        "filehash": filehash,
      })
    else:
      file_id = file[0]
    return file_id
а вот сама функция insert 
def insert(self, table, params):
    keys = ', '.join(params.keys())
    values = params.values()
    query = "INSERT INTO files (%s) VALUES (?, ?)" % (keys);
    self.cur.execute(query, values) ##А именно на эту строчку
    self.conn.commit()
    return self.cur.lastrowid
В общем надеюсь , что кто-то поймет в чем дело, моя задача - что бы это заработало, мне нравиться что делает этот проект, но не нашел аналогов на 3 python, хочу перенести, аналогов не нашел к сожалению