Я пытаюсь вставить строку, полученную в качестве аргумента, в базу данных sqlite, используя python:
def addUser(self, name):
cursor=self.conn.cursor()
t = (name)
cursor.execute("INSERT INTO users ( unique_key, name, is_online, translate) VALUES (NULL, ?, 1, 0);", t)
self.conn.commit()
Я не хочу использовать конкатенацию строк, потому что http://docs.python.org/library/sqlite3.html советует против нее.
Однако, когда я запускаю код, я получаю исключение
cursor.execute("INSERT INTO users ( unique_key, name, is_online, translate) VALUES (NULL, ?, 1, 0);", t)
pysqlite2.dbapi2.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 7 supplied
Почему Python разбивает строку по символам, и есть ли способ предотвратить это?
РЕДАКТИРОВАТЬ:
изменение на t = (name,)
дает следующее исключение
print "INSERT INTO users ( unique_key, name, is_online, translate) VALUES (NULL, ?, 1, 0)" + t
exceptions.TypeError: cannot concatenate 'str' and 'tuple' objects